Android pm 命令解析

Android pm 命令解析

一、pm命令介紹與包名信息查詢

1.pm命令介紹

pm工具為包管理(package manager)的簡稱

可以使用pm工具來執行應用的安裝和查詢應用寶的信息、系統權限、控制應用

pm工具是Android開發與測試過程中必不可少的工具,shell命令格式如下:

pm

 

2.包名信息查詢

shell模式下:

pm list packages [options] [FILTER]

打印所有的已經安裝的應用的包名,如果設置瞭文件過濾則值顯示包含過濾文字的內容

參數

描述

-f 顯示每個包的文件位置
-d 使用過濾器,隻顯示禁用的應用的包名
-e 使用過濾器,隻顯示可用的應用的包名
-s 使用過濾器,隻顯示系統應用的包名
-3 使用過濾器,隻顯示第三方應用的包名
-i 查看應用的安裝者

二、權限信息查詢

1.權限基礎

權限的組成:權限的名稱,屬於的權限組,保護級別

例如:


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 授予應用權限許可。必需android6.0(API級別23)以上的設備
revoke 撤銷應用權限。必需android6.0(API級別23)以上的設備

例如:

需要註意的是所謂的授權是指你的apk裡面已有的權限進行授權,相當於啟用的概念

adb shell pm grant  android.permission.READ_CONTACTS
#授權( 取消權限同理)

三、其他信息查詢

1.測試包與apk路徑查詢

pm

子命令

參數

說明

list instrymentation 無參數 列出所有的instrumentation測試包
-f 列出apk文件位置
列出某個app的測試包
path 打印指定包名的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 指定安裝包的包名
-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]

#卸載應用

參數

說明

-k 卸載應用且保留數據與緩存(如果不加-k則全部刪除)

五、控制命令

1.清除應用數據

pm clear

2.禁用和啟用應用

pm

隻有系統應用才可以用,第三方應用不行

子命令

說明

enable 使package或component可用
disenable 使package或component不可用(直接就找不到應用瞭)
disenable-user [options] 使package或component不可用(會顯示已停用)

3.隱藏與恢復應用

pm

被隱藏應用在應用管理中變得不可見,桌面圖標也會消失

子命令

說明

hide PACKAGE_OR_COMPONENT 隱藏package或component
unhide PACKAGE_OR_CONPONENT 恢復可見package或component

4.控制應用的默認安裝位置

pm

需要root權限

子命令

說明

set-install-location 更改默認的安裝位置:
0:自動-讓系統決定最好的位置
1:內部存儲-安裝在內部設備上的存儲
2:外部存儲-安裝在外部媒體
註:隻用於調試,不要瞎搞
get-install-localtion 返回當前的安裝位置
0
1
2
對應上面的數字說明

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *