adb コマンド備忘録
概要
ブラックフライデーに乗じて購入した Google Pixel 3a XL への環境移行のときに調べたことのメモ.
普通に移行したいなら,Google がデータ移行手順を用意してくれている.
しかし,移行元が Android 4.4.4 と古く,この手順には対応していなかった.
環境
- PC: Ubuntu 20.04.1 LTS (Focal Fossa)
$ cat /etc/os-releaseで確認
- 移行先スマホ:
- Google Pixel 3a XL
- Android 9.0.0 Release 38 (PD2A.190115.029)
- 移行元スマホ:
- Android 4.4.4
adb 導入
ケース1: 移行元端末が Android 5.0 以降の場合
adb は apt でインストールしたものを用いる.
sudo apt install android-tools-adb
ケース2: 移行元端末が Android 4.X 系の場合
導入方法は要注意である.
Android 4.4.4 からの移行を行う場合,apt でインストールしてはいけない.何故なら,apt 経由でインストール可能なバージョンの adb は比較的新しいもの(少なくとも 1.0.32 以降)で,Android 4.4.4 からの adb backup をサポートしていないからである.
そこで,古い adb を落としてきて,手動で配置する必要がある.手順は次の通り.
adb バイナリの配置
- 以下からバイナリを落とし,適当な場所に配置する.
- http://dl-ssl.google.com/android/repository/platform-tools_r20-linux.zip
- このバイナリは 32 bit 用なので,64 bit OS では直接実行することができない.
- 以下を実行する.
$ sudo dpkg --add-architecture i386 $ sudo apt update $ sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
- 64bit Linux 上で、32bit ELF バイナリを実行できるようにする.
- bash: コマンドが確かに存在するのに “-bash: COMMAND: No such file or directory” と言われる - Qiita
- 「bash: ./adb: No such file or directory」あるいは「bash: ./adb: そのようなファイルやディレクトリはありません」と言われたときの対処方法
デバイスの接続と認識
- Android 端末側で USB デバッグを有効にする.
- Android 端末側で USB 接続モードを「ファイル転送モード(MSC)」から「メディア転送モード(MTP)」に変更する.
- Android 端末を USB ケーブルで PC と接続する.
$ lsusbで端末のベンダ ID を調べる.- Linux上のAndroid開発で実機実行する際のudev/adb設定 | さかな前線
Bus 002 Device 018: ID 0fce:619e Sony ...のように書いてあったら,ベンダ ID は0fce
- Linux上のAndroid開発で実機実行する際のudev/adb設定 | さかな前線
- /etc/udev/rules.d/51-android.rules に,ベンダごとに次のような行を追記する.
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
$ chmod a+r /etc/udev/rules.d/51-android.rules- udev 設定をリロードし, adb を再起動する.
$ sudo udevadm control --reload-rules $ adb kill-server $ adb start-server - 端末の USB ケーブルを一旦抜いて接続し直す.
- 端末画面に USB デバッグを許可するかどうかのダイアログが出るので,許可する.
$ adb devices- ここで,接続したい端末の表示が
deviceになっていることを確認する.unauthorizedになる場合,どこかで手順を誤っている.特に USB 接続モードの設定に注意.
- ここで,接続したい端末の表示が
アプリケーションデータのバックアップと復元
- バックアップ対象のアプリケーションのパッケージ名を調べておく.
- Google Play でアプリケーションのページを開くと,URL 内に「id=com.QdanApp.Keikenchi」のような形で含まれている.
- 移行元端末を PC に接続し,
adbから接続可能な状態にする. $ adb backup -f "<バックアップ先ファイル名>" -apk <パッケージ名>- たとえば,
$ adb backup -f "com.QdanApp.Keikenchi.ab" -apk com.QdanApp.Keikenchiのようにする.バックアップ先ファイルの拡張子は.abにするのが普通. - このとき,
-fの引数に渡すファイル名はダブルクォートで囲わないと,バックアップファイル名が強制的に backup.ab になってしまう. - 端末画面に確認の表示が出るため,操作を行う.
- たとえば,
- 移行元端末の接続を解除し,移行先端末を接続し直す.
$ adb restore "<バックアップ先ファイル名>"- たとえば,
$ adb restore "com.QdanApp.Keikenchi.ab"のようにする. - 端末画面に確認の表示が出るため,操作を行う.
- たとえば,
以上