pm工具爲包管理(package manager)的簡稱android
可使用pm工具來執行應用的安裝和查詢應用寶的信息、系統權限、控制應用shell
pm工具是Android開發與測試過程當中必不可少的工具,shell命令格式以下:緩存
pm <command>服務器
shell模式下:app
pm list packages [options] [FILTER]ide
打印全部的已經安裝的應用的包名,若是設置了文件過濾則值顯示包含過濾文字的內容工具
參數學習 |
描述測試 |
-f | 顯示每一個包的文件位置 |
-d | 使用過濾器,只顯示禁用的應用的包名 |
-e | 使用過濾器,只顯示可用的應用的包名 |
-s | 使用過濾器,只顯示系統應用的包名 |
-3 | 使用過濾器,只顯示第三方應用的包名 |
-i | 查看應用的安裝者 |
權限的組成:權限的名稱,屬於的權限組,保護級別spa
例如:
<permission android:description="string resource" android:icon="drable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]/>
protectionLevel |
說明 |
normal | 表示權限是低風險的,不會對系統,用戶或其餘應用程序形成危害 |
dangerous | 表示權限是高風險的,系統將可能要球用戶輸入相關信息,纔會授予此權限 |
signature | 表示只有當應用程序所用數字簽名與聲明引用權限的應用程序所用簽名相同時,才能將權限授予給它 |
signatureOrSystem | 須要簽名或者系統級應用(放置在/system/app目錄下)才能賦予權限 |
system | 系統級應用(放置在/system/app目錄下)才能賦予權限 |
自定義權限 | 應用自行定義的權限 |
shell模式下:
pm list permission-groups
#打印全部已知的權限組
pm list permissions [options] [GROUP]
#打印權限
參數能夠組合使用例如:pm list permissions –g -d
參數 |
說明 |
-g | 按組進行列出權限 |
-f | 打印全部信息 |
-s | 簡短的摘要 |
-d | 只有危險的權限列表 |
-u | 只有權限的用戶將看到列表 用戶自定義權限 |
注意:目標apk的minSdkVersion、targetSdkVersion也必需爲23及以上
子命令 |
說明 |
grant <package_name> <permission> | 授予應用權限許可。必需android6.0(API級別23)以上的設備 |
revoke <package_name> <permission> | 撤銷應用權限。必需android6.0(API級別23)以上的設備 |
例如:
須要注意的是所謂的受權是指你的apk裏面已有的權限進行受權,至關於啓用的概念
adb shell pm grant <packageName> android.permission.READ_CONTACTS #受權( 取消權限同理)
pm
子命令 |
參數 |
說明 |
list instrymentation | 無參數 | 列出全部的instrumentation測試包 |
-f | 列出apk文件位置 | |
<target_package> | 列出某個app的測試包 | |
path <package> | <package> | 打印指定包名的apk路徑 |
例如:
adb shell pm list instrumentation
adb shell pm list instrumentation TARGET_PACKAGE
adb shell pm path PACKAGE_NAME
pm
子命令 |
說明 |
list feature | 打印系統的全部功能 列出全部硬件相關信息 |
list libraries | 打印當前設備所支持的全部庫 |
例如:
adb shell pm list feature
pm dump PACKAGE
打印給定的包的系統狀態
打印內容 |
說明 |
DUMP OF SERVICE package | 打印服務信息 |
DUMP OF SERVICE activity | 打印activity信息 |
DUMP OF SERVICE meminfo | 打印當前內存使用信息 |
DUMP OF SERVICE procstats | 打印系統內存使用與一段時間內存彙總 |
DUMP OF SERVICE usagestats | 打印服務器使用狀態信息 |
DUMP OF SERVICE batterystats | 打印電池狀態信息 |
例如:
adb shell pm dump PACKAGE_NAME
pm install [-lrtsfd] [-i PACKAGE] [PATH]
經過指定路徑安裝apk到手機中(與adb install不一樣的是adb install安裝的.apk是在你的電腦上,而pm install安裝的apk是存儲在你的手機中)
參數 |
說明 |
-l | 鎖定應用程序 |
-r | 從新安裝應用,且保留應用數據 |
-t | 容許測試apk被安裝 |
-i <INSTALLER_PACKAGE_NAME> | 指定安裝包的包名 |
-s | 安裝到sd卡 |
-f | 安裝到系統內置存儲中(默認安裝位置) |
-d | 容許降級安裝(同一應用低級換高級) |
-g | 授予應用程序清單中列出的全部權限(只有6.0系統可用) |
首先將test.apk文件push到手機目錄中好比/data/local/tmp
adb shell pm install /data/local/tmp/test.apk #安裝
adb shell pm install –r /data/local/tmp/test.apk #從新安裝
pm uninstall [options] <PACKAGE>
#卸載應用
參數 |
說明 |
-k | 卸載應用且保留數據與緩存(若是不加-k則所有刪除) |
pm clear <PACKAGE_NAME>
pm
只有系統應用才能夠用,第三方應用不行
子命令 |
說明 |
enable <PACKAGE_OR_COMPONENT> | 使package或component可用 |
disenable <PACKAGE_OR_COMPONENT> | 使package或component不可用(直接就找不到應用了) |
disenable-user [options] <PACKAGE_OR_COMPONENT> | 使package或component不可用(會顯示已停用) |
pm
被隱藏應用在應用管理中變得不可見,桌面圖標也會消失
子命令 |
說明 |
hide PACKAGE_OR_COMPONENT | 隱藏package或component |
unhide PACKAGE_OR_CONPONENT | 恢復可見package或component |
pm
須要root權限
子命令 |
說明 |
set-install-location <LOCATION> | 更改默認的安裝位置: 0:自動-讓系統決定最好的位置 1:內部存儲-安裝在內部設備上的存儲 2:外部存儲-安裝在外部媒體 注:只用於調試,不要瞎搞 |
get-install-localtion | 返回當前的安裝位置 0 1 2 對應上面的數字說明 |