Android pm 命令詳解

一、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
對應上面的數字說明

轉載于:https://www.cnblogs.com/JianXu/p/5380882.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396331.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396331.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396331.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源 非開源_開源為善

開源 非開源by Michael D. Johnson邁克爾約翰遜(Michael D.Johnson) 開源為善 (Open Source for Good) We’ve spent two years coding for a cause, one nonprofit at a time. And now Free Code Camp’s pushing ahead to help organizations at scale.我們花了兩年的時間為…

mysql5.6熱升級_Mysql5.6主從熱備配置

數據庫是應用系統的核心&#xff0c;為了保證數據庫的安全采用主從熱備是很常見的方法&#xff0c;也就是主數據庫DDL、DML都將被同步到從數據庫。一、 實驗環境操作系統&#xff1a;windowsserver 2008 R2數據庫&#xff1a;mysql-advanced-5.6.21-winx64二、 準備工作1、…

InfluxDB(官方使用說明)

安裝InfluxDB OSS 此頁面提供有關安裝&#xff0c;啟動和配置InfluxDB的說明。 InfluxDB OSS安裝要求 root為了成功完成&#xff0c;需要安裝InfluxDB軟件包或具有管理員權限。 InfluxDB OSS網絡端口 InfluxDB默認使用以下網絡端口&#xff1a; TCP端口8086用于通過InfluxDB的H…

incc與oracle連接_Oracle 連接和會話的區別

連接并不是會話的同義詞&#xff0c;發現這一點時很多人都很詫異。在大多數人眼里&#xff0c;它們都是一樣的&#xff0c;但事實上并不一定如此。在一條連接上可以建立0個、一個或多個會話。各個會話是單獨而且獨立的&#xff0c;即使它們共享同一條數據庫物理連接也是如此。一…

CodeForces 176B Word Cut(DP)

題意&#xff1a;給你a串和b串&#xff0c;你能切k次&#xff0c;每次切完將尾部分放在頭的前面&#xff0c;問有多少種方案切k次從a串變為b串 思路&#xff1a;令dp[i][0]為砍了i次變成b串的方案數&#xff0c;dp[i][1]為砍了i次變成非b串的方案數&#xff0c;然后預處理一下前…

如何將React App轉換為React Native

I have been working on a lot of mobile projects lately?—?including Cordova, PhoneGap, React Native, some Ionic and Swift?—?but I have to say, React Native is by far the best experience in mobile development I have had so far. It has great, web-like d…

HTTP狀態碼:400\500 錯誤代碼

轉自&#xff1a;http://blog.sina.com.cn/s/blog_59b052fa0100it74.html一些常見的狀態碼為&#xff1a;200 - 服務器成功返回網頁404 - 請求的網頁不存在503 - 服務不可用詳細分解&#xff1a;1xx&#xff08;臨時響應&#xff09;表示臨時響應并需要請求者繼續執行操作的狀態…

dhcp服務

安裝與配置 配置文件 修改配置文件 復制這個文件到另一端 打開另一端的配置文件 原端輸入這些命令可以去掉英文 然后vim進入另一端配置文件 全局配置不在{}內的 分發范圍是指哪個ip到哪個ip的范圍 指定固定電腦獲取固定位置 原端修改配置文件 下面進行啟動dhcp 克隆一臺虛擬機&…

python數據結構與算法40題_Python數據結構與算法40:遞歸編程練習題3:ASCII謝爾賓斯基地毯...

注&#xff1a;本文如涉及到代碼&#xff0c;均經過Python 3.7實際運行檢驗&#xff0c;保證其嚴謹性。本文閱讀時間約為7分鐘。遞歸編程練習題3&#xff1a;ASCII謝爾賓斯基地毯謝爾賓斯基地毯謝爾賓斯基地毯是形如上圖的正方形分形圖案&#xff0c;每個地毯可分為等大小的9份…

使用Python發送電子郵件

by Arjun Krishna Babu通過Arjun Krishna Babu 如何使用Python發送電子郵件 (How to send emails using Python) As a learning exercise, I recently dug into Python 3 to see how I could fire off a bunch of emails. There may be more straightforward methods of doing…

此blog不更了

1轉載于:https://www.cnblogs.com/ybai62868/p/5384097.html

Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)

在接觸WebService時值得收藏的一篇文章&#xff1a; 在調試Axis1.4訪問WebService服務時&#xff0c;出現以下錯誤&#xff1a; Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart) 有錯誤找到錯誤原因以及發現值得收藏的…

java遍歷樹結構數據_Java數據結構——二叉樹的遍歷(匯總)

二叉樹的遍歷分為深度優先遍歷(DFS)和廣度優先遍歷(BFS)DFS遍歷主要有&#xff1a;前序遍歷中序遍歷后序遍歷一、遞歸實現DFSNode.java:public class Node {private Object data;Node richild;Node lechild;public Object getData() {return data;}public void setData(Object …

vue 移動端頭像裁剪_使用vue-cropper裁剪正方形上傳頭像-阿里云開發者社區

引用方式在組件內使用import { VueCropper } from vue-croppercomponents: {VueCropper,},main.js里面使用import VueCropper from vue-cropperVue.use(VueCropper)基本使用方法ref"cropper":img"option.img":autoCrop"true":fixedNumber"[…

規則引擎 設計 git_引擎蓋下的Git

規則引擎 設計 gitby Wassim Chegham由Wassim Chegham 引擎蓋下的Git (Git under the hood) Let’s explore some common Git commands, and dive into its internals to see what Git does when you run them.讓我們探索一些常見的Git命令&#xff0c;并深入了解其內部&#…

練習題之死鎖

public class PrintMain {public static String obj1"obj1";public static String obj2"obj2";public static void main(String[] args) {new Thread(new Runnable() {public void run() {System.out.println(new Date().toString "LockA開始執行&qu…

啟用或禁用對 Exchange Server 中的郵箱的 POP3 或 IMAP4 訪問

https://docs.microsoft.com/zh-cn/Exchange/clients/pop3-and-imap4/configure-mailbox-access?viewexchserver-2019 記錄下轉載于:https://www.cnblogs.com/amoy9812/p/9875426.html

java有什么壓力_編程語言的心智負擔!你學編程得有多大的壓力快來測試一下...

很多編程語言對比的文章&#xff0c;總喜歡比較各種編程語言的性能、語法、IO模型。本文將從心智負擔這個角度去比較下不同的編程語言和技術。內存越界如&#xff1a;C語言、C(C with class)C/C可以直接操作內存&#xff0c;但編程必須要面對內存越界問題。發生內存越界后&…

什么叫有效物理網卡_如何區分虛擬網卡和物理網卡?-阿里云開發者社區

一、什么是物理網卡和虛擬網卡&#xff1f;圖示如下&#xff1a;紅色部分包含VMWare的為虛擬網卡。通常&#xff0c;我們部署VMWare虛擬機、VMSphere虛擬集群、XenCenter虛擬集群是都會涉及虛擬網卡。二、辨別物理網卡和虛擬網卡的應用場景場景一&#xff1a;一般部署虛擬集群的…

算法復雜度的表示法_用簡單的英語算法:時間復雜度和Big-O表示法

算法復雜度的表示法by Michael Olorunnisola通過Michael Olorunnisola 用簡單的英語算法&#xff1a;時間復雜度和Big-O表示法 (Algorithms in plain English: time complexity and Big-O notation) Every good developer has time on their mind. They want to give their us…