adb shell 命令
簡單點講,adb 命令是 adb 這個程序自帶的一些命令,而 adb shell 則是調用的 Android 系統中的命令,這些 Android 特有的命令都放在了 Android 設備的 system/bin 目錄下,如下在命令行中敲這樣一個命令:
root@generic:/ # adb shell jjj
adb shell jjj
/system/bin/sh: jjj: not found 很明顯,在 bin 目錄下並不存在這個命令。
想看看有哪些命令,也不想去找文檔,於是就啟動模擬器,將整個 system/bin 目錄復制了出來,然后一個一個的去試。
C:\Users\Administrator>adb pull /system/bin/ E:\system-bin
打開這些文件就可以發現,里面有些命令其實是一個 shell 腳本,例如打開 monkey 文件:
打開 am:
pm
Package Manager , 可以用獲取到一些安裝在 Android 設備上得應用信息
pm 的源碼 pm.java , 直接運行 adb shell pm 可以獲取到該命令的幫助信息
pm list package 列出安裝在設備上的應用
不帶任何選項:列出所有的應用的包名
-s:列出系統應用
adb shell pm list package -s
-3:列出第三方應用
adb shell pm list package -3
-f:列出應用包名及對應的apk名及存放位置
adb shell pm list package -f
root@generic:/ # pm list package -f
pm list package -f
package:/system/app/SoundRecorder.apk=com.android.soundrecorder
package:/system/app/SdkSetup.apk=com.android.sdksetup
-i:列出應用包名及其安裝來源,結果顯示例子:
adb shell pm list package -i
package:com.zhihu.android installer=com.xiaomi.market
adb shell pm list package -i
命令最后加上grep關鍵字,可以很方便地查找自己想要的應用
參數組合使用,例如,查找三方應用中知乎的包名、apk存放位置、安裝來源:
root@generic:/ # pm list package -f -i fused
pm list package -f -i fused
package:/system/app/FusedLocation.apk=com.android.location.fused installer=null
pm path 列出對應包名的 .apk 位置
root@generic:/ # pm path com.android.smoketest
pm path com.android.smoketest
package:/data/app/SmokeTestApp.apk
pm list instrumentation , 列出含有單元測試 case 的應用,
后面可跟參數 -f (與 pm list package 中一樣),以及 [target=package]
pm install , 安裝應用
目標 apk 存放於 PC 端,請用 adb install 安裝
目標 apk 存放於 Android 設備上,請用 pm install 安裝
pm uninstall , 卸載應用,同 adb uninstall , 后面跟的參數都是應用的包名
am
am start 程序名 , 啟動一個 Activity,已啟動系統相機應用為例
啟動通訊錄
root@generic:/ # am start com.android.contacts
am start com.android.contacts
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.L
AUNCHER] pkg=com.android.contacts }
啟動撥號器撥打 10086
root@generic:/ # am start -a android.intent.action.CALL -d tel:10086
am start -a android.intent.action.CALL -d tel:10086
Starting: Intent { act=android.intent.action.CALL dat=tel:xxxxx
am monitor , 監控 crash(閃退) 與 ANR(Application Not Responding)
root@generic:/ # am monitor
am monitor
Monitoring activity manager... available commands:
(q)uit: finish monitoring
Input
這個命令可以向 Android 設備發送按鍵事件,其源碼 Input.java
input text , 發送文本內容,不能發送中文(前提先將鍵盤設置為英文鍵盤)
root@generic:/ # input text testrabbit
screencap
adb shell screencap -p /sdcard/screen.png 截圖命令
截屏,保存至 sdcard 目錄
root@generic:/ # screencap -p /sdcard/screen.jpg
screencap -p /sdcard/screen.jpg
查看到截圖如下:
getprop
查看 Android 設備的參數信息,只運行 adb shell getprop,結果以 key : value 鍵值對的形式顯示
adb shell getprop ro.build.version.sdk
獲取設備的 sdk 版本
adb shell getprop ro.build.version.release
獲取手機系統版本:
學習交流QQ:270224761 (ep)