查看應用列表的基本命令格式是
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
即在 adb shell pm list packages 的基礎上可以加一些參數進行過濾查看不同的列表,支持的過濾參數如下:
參數顯示列表無所有應用-f顯示應用關聯的 apk 文件-d只顯示 disabled 的應用-e只顯示 enabled 的應用-s只顯示系統應用-3隻顯示第三方應用-i顯示應用的 installer-u包含已卸載應用<FILTER>包名包含 <FILTER> 字符串命令:
adb shell pm list packages
輸出示例:
package:com.android.smoketestpackage:com.example.android.livecubespackage:com.android.providers.telephonypackage:com.google.android.googlequicksearchboxpackage:com.android.providers.calendarpackage:com.android.providers.mediapackage:com.android.protipspackage:com.android.documentsuipackage:com.android.gallerypackage:com.android.externalstorage...// other packages here...
命令:
adb shell pm list packages -s
命令:
adb shell pm list packages -3
比如要查看包名包含字符串 mazhuang 的應用列表,命令:
adb shell pm list packages mazhuang
當然也可以使用 grep 來過濾:
adb shell pm list packages | grep mazhuang
命令格式:
adb install [-lrtsdg] <path_to_apk>
參數:
adb install 後面可以跟一些可選參數來控制安裝 APK 的行為,可用參數及含義如下:
參數含義-l將應用安裝到保護目錄 /mnt/asec-r允許覆蓋安裝-t允許安裝 AndroidManifest.xml 裡 application 指定 android:testOnly="true" 的應用-s將應用安裝到 sdcard-d允許降級覆蓋安裝-g授予所有運行時權限運行命令後如果見到類似如下輸出(狀態為 Success)代表安裝成功:
[100%] /data/local/tmp/1.apk pkg: /data/local/tmp/1.apkSuccess
上面是當前最新版 v1.0.36 的 adb 的輸出,會顯示 push apk 文件到手機的進度百分比。
使用舊版本 adb 的輸出則是這樣的:
12040 KB/s (22205609 bytes in 1.801s) pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apkSuccess
而如果狀態為 Failure 則表示安裝失敗,比如:
[100%] /data/local/tmp/map-20160831.apk pkg: /data/local/tmp/map-20160831.apkFailure [INSTALL_FAILED_ALREADY_EXISTS]
常見安裝失敗輸出代碼、含義及可能的解決辦法如下:
輸出含義解決辦法INSTALL_FAILED_ALREADY_EXISTS應用已經存在,或卸載了但沒卸載乾淨adb install 時使用 -r 參數,或者先 adb uninstall <packagename> 再安裝INSTALL_FAILED_INVALID_APK無效的 APK 文件參考:PackageManager.java
adb install 內部原理簡介
adb install 實際是分三步完成:
push apk 文件到 /data/local/tmp。
調用 pm install 安裝。
刪除 /data/local/tmp 下的對應 apk 文件。
所以,必要的時候也可以根據這個步驟,手動分步執行安裝過程。
命令:
adb uninstall [-k] <packagename>
<packagename> 表示應用的包名,-k 參數可選,表示卸載應用但保留數據和緩存目錄。
命令示例:
adb uninstall com.qihoo360.mobilesafe
表示卸載 360 手機衛士。
命令:
adb shell pm clear <packagename>
<packagename> 表示應用名包,這條命令的效果相當於在設置裡的應用信息界面點擊了「清除緩存」和「清除數據」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe
表示清除 360 手機衛士的數據和緩存。
命令:
adb shell dumpsys activity activities | grep mFocusedActivity
輸出示例:
mFocusedActivity: ActivityRecord{8079d7e u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher t42}
其中的 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher 就是當前處於前臺的 Activity。
命令:
adb shell dumpsys activity services [<packagename>]
<packagename> 參數不是必須的,指定 <packagename> 表示查看與某個包名相關的 Services,不指定表示查看所有 Services。
<packagename> 不一定要給出完整的包名,比如運行 adb shell dumpsys activity services org.mazhuang,那麼包名 org.mazhuang.demo1、org.mazhuang.demo2 和 org.mazhuang123 等相關的 Services 都會列出來。
我們是每周三的黑盒測試組,我們專注於黑盒測試過程中的一切,包括但不局限於總結現有的工作成果,發掘新的工作方法,探尋高效的測試工具等,所有與黑盒測試相關的話題都可以在這裡討論
(群號:219234105,或者直接掃描下方二維碼)
點擊閱讀原文可以查看更全的 adb 用法~