Android アプリ開発で adb コマンドを操作することがあります。基本的にはLinuxをベースとしたOSなのでLinux commandを使うことが多いですがAndroidとしてのコマンドもある程度知っておいた方がいいでしょう。
adb command list
アプリ開発でよく使うコマンドです
大前提として、端末にPCからUSB等でつないでadbコマンドが使える段階からですので、そこまでできていない場合はアプリを実機でデバッグするためのUSB ドライバーを設定するを参考に設定してください。
またadbの実行本体のためにはsdkをインストールしておきます。windowsあるいはMac
尚、example はMacのケースですがWindowsとの差異は、ファイルパスの違いです。
adbを使うためにPATHを通しておく、PATHを切ると便利です。
adb shell | シェルの起動 |
adb devices | android deviceの確認 |
adb install [packagename] | アプリのインストール |
adb install -r [packagename] | アプリの再インストール |
adb shell pm list packages | アプリの一覧 |
adb uninstall [packagename] | アプリの削除 |
adb push A B | AをAndroidのBにコピー |
adb pull A B | AをPCのBにコピー |
adb kill-server | adb の停止 |
adb start-server | adb の起動 |
exit | shellから出る |
Windowsではコマンドプロンプトを起動して使います。
adb shell
このコマンドで接続端末の Linux OS に入り
ファイルを見ることができます
Android Wearを除いて、複数のemulatorが起動していてたり実機がUSBで接続されているとエラーとなりますので、ターゲットを1つにしてください。
1 2 3 |
hoge$ adb shell shell@flo:/ $ |
これ以降はLinuxコマンドを使います
ls でこの場合トップにあるファイル、ディレクトリーを見ることが可能。
1 2 3 4 5 6 7 8 |
shell@flo:/ $ ls acct ... ueventd.rc vendor shell@flo:/ $ |
ls -l でより詳しくわかります
Nexus 5X の例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
1|bullhead:/ $ ls -l ls: ./persist: Permission denied ls: ./vndservice_contexts: Permission denied ls: ./verity_key: Permission denied ls: ./ueventd.rc: Permission denied ls: ./ueventd.bullhead.rc: Permission denied ls: ./plat_hwservice_contexts: Permission denied ls: ./nonplat_service_contexts: Permission denied ls: ./nonplat_hwservice_contexts: Permission denied ls: ./init.zygote64_32.rc: Permission denied ls: ./init.zygote32.rc: Permission denied ls: ./init.usb.rc: Permission denied ls: ./init.usb.configfs.rc: Permission denied ls: ./init.recovery.bullhead.rc: Permission denied ls: ./init.rc: Permission denied ls: ./init.environ.rc: Permission denied ls: ./init.bullhead.usb.rc: Permission denied ls: ./init.bullhead.sensorhub.rc: Permission denied ls: ./init.bullhead.rc: Permission denied ls: ./init.bullhead.ramdump.rc: Permission denied ls: ./init.bullhead.misc.rc: Permission denied ls: ./init.bullhead.fp.rc: Permission denied ls: ./init.bullhead.diag.rc: Permission denied ls: ./init: Permission denied ls: ./fstab.bullhead: Permission denied ls: ./default.prop: Permission denied total 420 drwxr-xr-x 81 root root 0 1972-04-20 00:16 acct lrwxrwxrwx 1 root root 50 1970-01-01 08:00 bugreports -> /data/user_de/0/com.android.shell /files/bugreports drwxrwx--- 6 system cache 4096 2018-01-16 16:55 cache lrwxrwxrwx 1 root root 13 1970-01-01 08:00 charger -> /sbin/charger drwxr-xr-x 4 root root 0 1970-01-01 08:00 config lrwxrwxrwx 1 root root 17 1970-01-01 08:00 d -> /sys/kernel/debug drwxrwx--x 41 system system 4096 1972-01-17 00:53 data drwxr-xr-x 15 root root 3660 2018-01-23 18:34 dev lrwxrwxrwx 1 root root 11 1970-01-01 08:00 etc -> /system/etc dr-xr-x--- 3 system system 16384 1970-01-01 08:00 firmware drwxr-xr-x 10 root system 220 1972-04-20 00:16 mnt -rw-r--r-- 1 root root 13556 1970-01-01 08:00 nonplat_file_contexts -rw-r--r-- 1 root root 357 1970-01-01 08:00 nonplat_property_contexts -rw-r--r-- 1 root root 0 1970-01-01 08:00 nonplat_seapp_contexts drwxr-xr-x 2 root root 0 1970-01-01 08:00 oem -rw-r--r-- 1 root root 20703 1970-01-01 08:00 plat_file_contexts -rw-r--r-- 1 root root 4341 1970-01-01 08:00 plat_property_contexts -rw-r--r-- 1 root root 965 1970-01-01 08:00 plat_seapp_contexts -rw-r--r-- 1 root root 12996 1970-01-01 08:00 plat_service_contexts dr-xr-xr-x 438 root root 0 1970-01-01 08:00 proc drwxr-xr-x 3 root root 0 1970-01-01 08:00 res drwx------ 2 root root 0 2017-11-21 03:01 root drwxr-x--- 2 root root 0 1970-01-01 08:00 sbin lrwxrwxrwx 1 root root 21 1970-01-01 08:00 sdcard -> /storage/self/primary -rw-r--r-- 1 root root 308601 1970-01-01 08:00 sepolicy drwxr-xr-x 4 root root 80 2018-01-23 18:34 storage dr-xr-xr-x 12 root root 0 1972-04-20 00:16 sys drwxr-xr-x 15 root root 4096 1970-01-01 08:00 system drwxr-xr-x 11 root root 4096 1970-01-01 08:00 vendor 1|bullhead:/ $ |
/sdcard は /storage/self/primary にリンクされており
lrwxrwxrwx となっているのでユーザーが読み書き可能な領域となっていることがわかります。
もっともNexus 5XにはSDカードスロットが無いので、実際のSDカードではないというのが分かります。外部ストレージとGoogleが言っていますが、端末内にあるアプリ外のストレージ領域ということでしょうか
尚、ファイル構造は端末によって多少異なりますので、個々に確認する必要があります。
adb devices
接続している Android 端末のIDが分かります
1 2 3 4 5 6 |
hoge$ adb devices List of devices attached 0a852d57 device hoge$ |
adb install [packagename]
apk ファイルをインストールします
同じレベルにAndroid アプリのapk(app-release.apk)があるとすると
以下コマンドでインストールできます
1 2 3 4 5 6 |
hoge$ adb install app-release.apk 5471 KB/s (856743 bytes in 0.152s) pkg: /data/local/tmp/app-debug.apk Success hoge$ |
adb install -r [packagename]
-r を付加して再インストール
1 2 3 4 5 6 |
hoge$ adb install -r app-debug.apk 5157 KB/s (856743 bytes in 0.162s) pkg: /data/local/tmp/app-debug.apk Success hoge$ |
adb shell pm list packages
インストールされているアプリの一覧
adb shell で入った後で
pm list packages
でも可能です
1 2 3 4 5 6 7 8 |
hoge$ adb shell pm list packages package:com.chartcross.gpstest package:com.android.packageinstaller ... package:com.example.test002 ... hoge$ |
adb uninstall [packagename]
インストールされているアプリを選んで削除
1 2 3 4 |
hoge$ adb uninstall com.example.test002 Success hoge$ |
adb push A B
ホームディレクトリのDesktop/temp/以下にあるtest.txt を
端末の /sdcard/ ディレクトリにコピーする例です
Mac の場合 ~/ はホームディレクトリですが
コマンドを入力するロケーションにtest.txtがあれば
adb push test.txt /sdcard/
で済みます
1 2 3 4 |
hoge$ adb push ~/Desktop/temp/test.txt /sdcard/ 52 KB/s (325 bytes in 0.006s) hoge$ |
また、全てのディレクトリに書き込みができる訳ではありません
adb pull A B
これは端末の /sdcard/test.txt ファイルを ~/Desktop/temp/ のフォルダーにコピーしています
1 2 3 4 |
hoge$ adb pull /sdcard/test.txt ~/Desktop/temp/ 158 KB/s (325 bytes in 0.002s) hoge$ |
adb kill-server, adb start-server
adb を再起動させる場合に使います
1 2 3 4 5 |
hoge$ adb kill-server t2-no-MacBook-Pro:temp t2$ adb start-server * daemon not running. starting it now on port 5037 * * daemon started successfully * hoge$ |
exit
入ったshellから出ます。
1 2 |
shell@flo:/ $ exit hoge$ |
関連ページ:
Reference:
Android Debug Bridge