adb(4)-应用管理
?
1.舉例說明:
1.查看引用列表:查看你當前設備上有什么應用(顯示的是包名)
2.查看系統應用
3.查看第三方應用
4.包名包含某字符串的應用
兩種方式
5.安裝apk
?
6.卸載應用
?
7.清楚應用數據與緩存
8.查看前臺activity
2.具體詳解
查看應用列表
查看應用列表的基本命令格式是
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 | 包含已卸載應用 |
| ? | 包名包含?字符串 |
所有應用
命令:
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?的應用列表,命令:
adb shell pm list packages mazhuang當然也可以使用 grep 來過濾:
adb shell pm list packages | grep mazhuang安裝 APK
命令:
adb install參數:
adb install?后面可以跟一些參數來控制安裝 APK 的行為,常用參數及含義如下:
| -r | 允許覆蓋安裝。 |
| -s | 將應用安裝到 sdcard。 |
| -d | 允許降級覆蓋安裝。 |
完整參數列表及含義可以直接運行?adb?命令然后查看?adb install [-lrtsdg]?一節。
如果見到類似如下輸出(狀態為?Success)代表安裝成功:
12040 KB/s (22205609 bytes in 1.801s)pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apk Success而如果狀態為?Failure?則表示安裝失敗。常見安裝失敗輸出代碼、含義及可能的解決辦法如下:
| INSTALL_FAILED_ALREADY_EXISTS | 應用已經存在 | 使用?-r?參數 |
| INSTALL_FAILED_INVALID_APK | 無效的 APK 文件 | ? |
| INSTALL_FAILED_INVALID_URI | 無效的 APK 文件名 | 確保 APK 文件名里無中文 |
| INSTALL_FAILED_INSUFFICIENT_STORAGE | 空間不足 | 清理空間 |
| INSTALL_FAILED_DUPLICATE_PACKAGE | 已經存在同名程序 | ? |
| INSTALL_FAILED_NO_SHARED_USER | 請求的共享用戶不存在 | ? |
| INSTALL_FAILED_UPDATE_INCOMPATIBLE | 已經安裝過簽名不一樣的同名應用,且數據沒有移除 | ? |
| INSTALL_FAILED_SHARED_USER_INCOMPATIBLE | 請求的共享用戶存在但簽名不一致 | ? |
| INSTALL_FAILED_MISSING_SHARED_LIBRARY | 安裝包使用了設備上不可用的共享庫 | ? |
| INSTALL_FAILED_REPLACE_COULDNT_DELETE | 替換時無法刪除 | ? |
| INSTALL_FAILED_DEXOPT | dex 優化驗證失敗或空間不足 | ? |
| INSTALL_FAILED_OLDER_SDK | 設備系統版本低于應用要求 | ? |
| INSTALL_FAILED_CONFLICTING_PROVIDER | 設備里已經存在與應用里同名的 content provider | ? |
| INSTALL_FAILED_NEWER_SDK | 設備系統版本高于應用要求 | ? |
| INSTALL_FAILED_TEST_ONLY | 應用是 test-only 的,但安裝時沒有指定?-t參數 | ? |
| INSTALL_FAILED_CPU_ABI_INCOMPATIBLE | 包含不兼容設備 CPU 應用程序二進制接口的 native code | ? |
| INSTALL_FAILED_MISSING_FEATURE | 應用使用了設備不可用的功能 | ? |
| INSTALL_FAILED_CONTAINER_ERROR | sdcard 訪問失敗 | 確認 sdcard 可用,或者安裝到內置存儲 |
| INSTALL_FAILED_INVALID_INSTALL_LOCATION | 不能安裝到指定位置 | 切換安裝位置,添加或刪除?-s?參數 |
| INSTALL_FAILED_MEDIA_UNAVAILABLE | 安裝位置不可用 | 一般為 sdcard,確認 sdcard 可用或安裝到內置存儲 |
| INSTALL_FAILED_VERIFICATION_TIMEOUT | 驗證安裝包超時 | ? |
| INSTALL_FAILED_VERIFICATION_FAILURE | 驗證安裝包失敗 | ? |
| INSTALL_FAILED_PACKAGE_CHANGED | 應用與調用程序期望的不一致 | ? |
| INSTALL_FAILED_UID_CHANGED | 以前安裝過該應用,與本次分配的 UID 不一致 | 清除以前安裝過的殘留文件 |
| INSTALL_FAILED_VERSION_DOWNGRADE | 已經安裝了該應用更高版本 | 使用?-d?參數 |
| INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE | 已安裝 target SDK 支持運行時權限的同名應用,要安裝的版本不支持運行時權限 | ? |
| INSTALL_PARSE_FAILED_NOT_APK | 指定路徑不是文件,或不是以?.apk?結尾 | ? |
| INSTALL_PARSE_FAILED_BAD_MANIFEST | 無法解析的 AndroidManifest.xml 文件 | ? |
| INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION | 解析器遇到異常 | ? |
| INSTALL_PARSE_FAILED_NO_CERTIFICATES | 安裝包沒有簽名 | ? |
| INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES | 已安裝該應用,且簽名與 APK 文件不一致 | 先卸載設備上的該應用,再安裝 |
| INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING | 解析 APK 文件時遇到?CertificateEncodingException | ? |
| INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME | manifest 文件里沒有或者使用了無效的包名 | ? |
| INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID | manifest 文件里指定了無效的共享用戶 ID | ? |
| INSTALL_PARSE_FAILED_MANIFEST_MALFORMED | 解析 manifest 文件時遇到結構性錯誤 | ? |
| INSTALL_PARSE_FAILED_MANIFEST_EMPTY | 在 manifest 文件里找不到找可操作標簽(instrumentation 或 application) | ? |
| INSTALL_FAILED_INTERNAL_ERROR | 因系統問題安裝失敗 | ? |
| INSTALL_FAILED_USER_RESTRICTED | 用戶被限制安裝應用 | ? |
| INSTALL_FAILED_DUPLICATE_PERMISSION | 應用嘗試定義一個已經存在的權限名稱 | ? |
| INSTALL_FAILED_NO_MATCHING_ABIS | 應用包含設備的應用程序二進制接口不支持的 native code | ? |
| INSTALL_CANCELED_BY_USER | 應用安裝需要在設備上確認,但未操作設備或點了取消 | 在設備上同意安裝 |
| INSTALL_FAILED_ACWF_INCOMPATIBLE | 應用程序與設備不兼容 | ? |
| does not contain AndroidManifest.xml | 無效的 APK 文件 | ? |
| is not a valid zip file | 無效的 APK 文件 | ? |
| Offline | 設備未連接成功 | 先將設備與 adb 連接成功 |
| unauthorized | 設備未授權允許調試 | ? |
| error: device not found | 沒有連接成功的設備 | 先將設備與 adb 連接成功 |
| protocol failure | 設備已斷開連接 | 先將設備與 adb 連接成功 |
| Unknown option: -s | Android 2.2 以下不支持安裝到 sdcard | 不使用?-s?參數 |
| No space left on devicerm | 空間不足 | 清理空間 |
| Permission denied ... sdcard ... | sdcard 不可用 | ? |
參考:PackageManager.java
卸載應用
命令:
adb uninstall [-k]表示應用的包名,-k?參數可選,表示卸載應用但保留數據和緩存目錄。
命令示例:
adb uninstall com.qihoo360.mobilesafe表示卸載 360 手機衛士。
清除應用數據與緩存
命令:
adb shell pm clear表示應用名包,這條命令的效果相當于在設置里的應用信息界面點擊了「清除緩存」和「清除數據」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe表示清除 360 手機衛士的數據和緩存。
查看前臺 Activity
命令:
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。
轉載于:https://www.cnblogs.com/jiablogs/p/8794263.html
總結
以上是生活随笔為你收集整理的adb(4)-应用管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于STM32 SPI NSS的讨论
- 下一篇: [Trie] Luogu P2992 [