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.mzph.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…