本文章轉(zhuǎn)載于搜狗測(cè)試
應(yīng)用管理
查看應(yīng)用列表的基本命令格式是
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
即在adb shell pm list packages的基礎(chǔ)上可以加一些參數(shù)進(jìn)行過濾查看不同的列表砖顷,支持的過濾參數(shù)如下:
參數(shù)顯示列表
無所有應(yīng)用
-f顯示應(yīng)用關(guān)聯(lián)的 apk 文件
-d只顯示 disabled 的應(yīng)用
-e只顯示 enabled 的應(yīng)用
-s只顯示系統(tǒng)應(yīng)用
-3只顯示第三方應(yīng)用
-i顯示應(yīng)用的 installer
-u包含已卸載應(yīng)用
包名包含字符串
命令:
adb shell pm list packages
輸出示例:
package:com.android.smoketest
package:com.example.android.livecubes
package:com.android.providers.telephony
package:com.google.android.googlequicksearchbox
package:com.android.providers.calendar
package:com.android.providers.media
package:com.android.protips
package:com.android.documentsui
package:com.android.gallery
package:com.android.externalstorage
...
// other packages here
...
命令:
adb shell pm list packages -s
命令:
adb shell pm list packages -3
比如要查看包名包含字符串mazhuang的應(yīng)用列表楣导,命令:
adb shell pm list packages mazhuang
當(dāng)然也可以使用 grep 來過濾:
adb shell pm list packages|grep mazhuang
命令格式:
adb install [-lrtsdg]
參數(shù):
adb install后面可以跟一些可選參數(shù)來控制安裝 APK 的行為贬蛙,可用參數(shù)及含義如下:
參數(shù)含義
-l將應(yīng)用安裝到保護(hù)目錄 /mnt/asec
-r允許覆蓋安裝
-t允許安裝 AndroidManifest.xml 里 application 指定android:testOnly="true"的應(yīng)用
-s將應(yīng)用安裝到 sdcard
-d允許降級(jí)覆蓋安裝
-g授予所有運(yùn)行時(shí)權(quán)限
運(yùn)行命令后如果見到類似如下輸出(狀態(tài)為Success)代表安裝成功:
[100%] /data/local/tmp/1.apk
pkg: /data/local/tmp/1.apk
Success
上面是當(dāng)前最新版 v1.0.36 的 adb 的輸出,會(huì)顯示 push apk 文件到手機(jī)的進(jìn)度百分比差导。
使用舊版本 adb 的輸出則是這樣的:
12040 KB/s (22205609 bytesin1.801s)? ? ? ? pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apkSuccess
而如果狀態(tài)為Failure則表示安裝失敗鲫忍,比如:
[100%] /data/local/tmp/map-20160831.apk
pkg: /data/local/tmp/map-20160831.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
常見安裝失敗輸出代碼舰始、含義及可能的解決辦法如下:
輸出含義解決辦法
INSTALL_FAILED_ALREADY_EXISTS應(yīng)用已經(jīng)存在第焰,或卸載了但沒卸載干凈adb install時(shí)使用-r參數(shù),或者先adb uninstall 再安裝
INSTALL_FAILED_INVALID_APK無效的 APK 文件
INSTALL_FAILED_INVALID_URI無效的 APK 文件名確保 APK 文件名里無中文
INSTALL_FAILED_INSUFFICIENT_STORAGE空間不足清理空間
INSTALL_FAILED_DUPLICATE_PACKAGE已經(jīng)存在同名程序
INSTALL_FAILED_NO_SHARED_USER請(qǐng)求的共享用戶不存在
INSTALL_FAILED_UPDATE_INCOMPATIBLE以前安裝過同名應(yīng)用上枕,但卸載時(shí)數(shù)據(jù)沒有移除先adb uninstall 再安裝
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE請(qǐng)求的共享用戶存在但簽名不一致
INSTALL_FAILED_MISSING_SHARED_LIBRARY安裝包使用了設(shè)備上不可用的共享庫
INSTALL_FAILED_REPLACE_COULDNT_DELETE替換時(shí)無法刪除
INSTALL_FAILED_DEXOPTdex 優(yōu)化驗(yàn)證失敗或空間不足
INSTALL_FAILED_OLDER_SDK設(shè)備系統(tǒng)版本低于應(yīng)用要求
INSTALL_FAILED_CONFLICTING_PROVIDER設(shè)備里已經(jīng)存在與應(yīng)用里同名的 content provider
INSTALL_FAILED_NEWER_SDK設(shè)備系統(tǒng)版本高于應(yīng)用要求
INSTALL_FAILED_TEST_ONLY應(yīng)用是 test-only 的咐熙,但安裝時(shí)沒有指定-t參數(shù)
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE包含不兼容設(shè)備 CPU 應(yīng)用程序二進(jìn)制接口的 native code
INSTALL_FAILED_MISSING_FEATURE應(yīng)用使用了設(shè)備不可用的功能
INSTALL_FAILED_CONTAINER_ERRORsdcard 訪問失敗確認(rèn) sdcard 可用,或者安裝到內(nèi)置存儲(chǔ)
INSTALL_FAILED_INVALID_INSTALL_LOCATION不能安裝到指定位置切換安裝位置辨萍,添加或刪除-s參數(shù)
INSTALL_FAILED_MEDIA_UNAVAILABLE安裝位置不可用一般為 sdcard棋恼,確認(rèn) sdcard 可用或安裝到內(nèi)置存儲(chǔ)
INSTALL_FAILED_VERIFICATION_TIMEOUT驗(yàn)證安裝包超時(shí)
INSTALL_FAILED_VERIFICATION_FAILURE驗(yàn)證安裝包失敗
INSTALL_FAILED_PACKAGE_CHANGED應(yīng)用與調(diào)用程序期望的不一致
INSTALL_FAILED_UID_CHANGED以前安裝過該應(yīng)用,與本次分配的 UID 不一致清除以前安裝過的殘留文件
INSTALL_FAILED_VERSION_DOWNGRADE已經(jīng)安裝了該應(yīng)用更高版本使用-d參數(shù)
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE已安裝 target SDK 支持運(yùn)行時(shí)權(quán)限的同名應(yīng)用锈玉,要安裝的版本不支持運(yùn)行時(shí)權(quán)限
INSTALL_PARSE_FAILED_NOT_APK指定路徑不是文件爪飘,或不是以.apk結(jié)尾
INSTALL_PARSE_FAILED_BAD_MANIFEST無法解析的 AndroidManifest.xml 文件
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION解析器遇到異常
INSTALL_PARSE_FAILED_NO_CERTIFICATES安裝包沒有簽名
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES已安裝該應(yīng)用,且簽名與 APK 文件不一致先卸載設(shè)備上的該應(yīng)用拉背,再安裝
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING解析 APK 文件時(shí)遇到CertificateEncodingException
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAMEmanifest 文件里沒有或者使用了無效的包名
INSTALL_PARSE_FAILED_BAD_SHARED_USER_IDmanifest 文件里指定了無效的共享用戶 ID
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED解析 manifest 文件時(shí)遇到結(jié)構(gòu)性錯(cuò)誤
INSTALL_PARSE_FAILED_MANIFEST_EMPTY在 manifest 文件里找不到找可操作標(biāo)簽(instrumentation 或 application)
INSTALL_FAILED_INTERNAL_ERROR因系統(tǒng)問題安裝失敗
INSTALL_FAILED_USER_RESTRICTED用戶被限制安裝應(yīng)用
INSTALL_FAILED_DUPLICATE_PERMISSION應(yīng)用嘗試定義一個(gè)已經(jīng)存在的權(quán)限名稱
INSTALL_FAILED_NO_MATCHING_ABIS應(yīng)用包含設(shè)備的應(yīng)用程序二進(jìn)制接口不支持的 native code
INSTALL_CANCELED_BY_USER應(yīng)用安裝需要在設(shè)備上確認(rèn)师崎,但未操作設(shè)備或點(diǎn)了取消在設(shè)備上同意安裝
INSTALL_FAILED_ACWF_INCOMPATIBLE應(yīng)用程序與設(shè)備不兼容
does not contain AndroidManifest.xml無效的 APK 文件
is not a valid zip file無效的 APK 文件
Offline設(shè)備未連接成功先將設(shè)備與 adb 連接成功
unauthorized設(shè)備未授權(quán)允許調(diào)試
error: device not found沒有連接成功的設(shè)備先將設(shè)備與 adb 連接成功
protocol failure設(shè)備已斷開連接先將設(shè)備與 adb 連接成功
Unknown option: -sAndroid 2.2 以下不支持安裝到 sdcard不使用-s參數(shù)
No space left on devicerm空間不足清理空間
Permission denied ... sdcard ...sdcard 不可用
adb install內(nèi)部原理簡(jiǎn)介
adb install實(shí)際是分三步完成:
push apk 文件到 /data/local/tmp。
調(diào)用 pm install 安裝去团。
刪除 /data/local/tmp 下的對(duì)應(yīng) apk 文件抡诞。
所以,必要的時(shí)候也可以根據(jù)這個(gè)步驟土陪,手動(dòng)分步執(zhí)行安裝過程。
命令:
adb uninstall [-k]
表示應(yīng)用的包名肴熏,-k參數(shù)可選鬼雀,表示卸載應(yīng)用但保留數(shù)據(jù)和緩存目錄。
命令示例:
adb uninstall com.qihoo360.mobilesafe
表示卸載 360 手機(jī)衛(wèi)士蛙吏。
命令:
adb shell pm clear
表示應(yīng)用名包源哩,這條命令的效果相當(dāng)于在設(shè)置里的應(yīng)用信息界面點(diǎn)擊了「清除緩存」和「清除數(shù)據(jù)」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe
表示清除 360 手機(jī)衛(wèi)士的數(shù)據(jù)和緩存鸦做。
命令:
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就是當(dāng)前處于前臺(tái)的 Activity励烦。
命令:
adb shell dumpsys activity services []
參數(shù)不是必須的,指定表示查看與某個(gè)包名相關(guān)的 Services泼诱,不指定表示查看所有 Services坛掠。
不一定要給出完整的包名,比如運(yùn)行adb shell dumpsys activity services org.mazhuang,那么包名org.mazhuang.demo1屉栓、org.mazhuang.demo2和org.mazhuang123等相關(guān)的 Services 都會(huì)列出來舷蒲。