標籤:
一、pm命令介紹與包名資訊查詢1.pm命令介紹
pm工具為包管理(package manager)的簡稱
可以使用pm工具來執行應用的安裝和查詢應用寶的資訊、系統許可權、控制應用
pm工具是Android開發與測試過程中必不可少的工具,shell命令格式如下:
pm <command>
2.包名資訊查詢
shell模式下:
pm list packages [options] [FILTER]
列印所有的已經安裝的應用的包名,如果設定了檔案過濾則值顯示包含過濾文字的內容
參數 |
描述 |
| -f |
顯示每個包的檔案位置 |
| -d |
使用過濾器,只顯示禁用的應用的包名 |
| -e |
使用過濾器,只顯示可用的應用的包名 |
| -s |
使用過濾器,只顯示系統應用的包名 |
| -3 |
使用過濾器,只顯示第三方應用的包名 |
| -i |
查看應用的安裝者 |
二、許可權資訊查詢1.許可權基礎
許可權的組成:許可權的名稱,屬於的許可權組,保護層級
例如:
<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目錄下)才能賦予許可權 |
| 自訂許可權 |
應用自行定義的許可權 |
2.許可權查詢
shell模式下:
pm list permission-groups
#列印所有已知的許可權組
pm list permissions [options] [GROUP]
#列印許可權
參數可以組合使用例如:pm list permissions –g -d
參數 |
說明 |
| -g |
按組進行列出許可權 |
| -f |
列印所有資訊 |
| -s |
簡短的摘要 |
| -d |
只有危險的許可權列表 |
| -u |
只有許可權的使用者將看到列表 使用者自訂許可權 |
3.授權與取消
注意:目標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#授權( 取消許可權同理)
三、其他資訊查詢1.測試包與apk路徑查詢
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
2.系統功能與支援庫查詢
pm
子命令 |
說明 |
| list feature |
列印系統的所有功能 列出所有硬體相關資訊 |
| list libraries |
列印當前裝置所支援的所有庫 |
例如:
adb shell pm list feature
3.列印包的系統狀態資訊
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
四、安裝與卸載1.安裝
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 #重新安裝
2.卸載
pm uninstall [options] <PACKAGE>
#卸載應用
參數 |
說明 |
| -k |
卸載應用且保留資料與緩衝(如果不加-k則全部刪除) |
五、控制命令1.清除應用資料
pm clear <PACKAGE_NAME>
2.禁用和啟用應用
pm
只有系統應用才可以用,第三方應用不行
子命令 |
說明 |
| enable <PACKAGE_OR_COMPONENT> |
使package或component可用 |
| disenable <PACKAGE_OR_COMPONENT> |
使package或component不可用(直接就找不到應用了) |
| disenable-user [options] <PACKAGE_OR_COMPONENT> |
使package或component不可用(會顯示已停用) |
3.隱藏與恢複應用
pm
被隱藏應用在應用管理中變得不可見,案頭表徵圖也會消失
子命令 |
說明 |
| hide PACKAGE_OR_COMPONENT |
隱藏package或component |
| unhide PACKAGE_OR_CONPONENT |
恢複可見package或component |
4.控制應用的預設安裝位置
pm
需要root許可權
子命令 |
說明 |
| set-install-location <LOCATION> |
更改預設的安裝位置: 0:自動-讓系統決定最好的位置 1:內部儲存-安裝在內部裝置上的儲存 2:外部儲存-安裝在外部媒體 註:只用於調試,不要瞎搞 |
| get-install-localtion |
返回當前的安裝位置 0 1 2 對應上面的數字說明 |
Android pm 命令詳解