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 对应上面的数字说明 |
Android pm 命令详解的更多相关文章
- android adb 命令详解
ADB (Android Debug Bridge) 是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...
- Android下pm命令详解
在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之. 0. Usage: ...
- Android下pm 命令详解
Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之.0. Usag ...
- Android ADB命令详解
adb的全称为Android Debug Bridge.是android司机经常用到的工具 . 你能在本篇文章中学到什么? adb基本指令 Shell AM&PM adb模拟用户事件 logc ...
- Android logcat命令详解
一.logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用lo ...
- 转: android emulator 命令详解
在命令行输入: emulator -help,即可显示emulator支持的所有命令. Android Emulator usage: emulator [options] [-qemu args] ...
- Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
- Android的logcat命令详解
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- adb shell 命令详解,android
http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...
随机推荐
- "prefs:root" or "App-Prefs:root"
iOS 苹果审核也是看心情的吗?已经上线几个版本了,新版本提交审核居然被查出来了! Guideline 2.5.1 - Performance - Software Requirements Your ...
- 作业1MathExam
自己取一个大气又可爱的标题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 720 1000 ...
- 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处 <Linux内核分析>MOOC课程http: ...
- 结对项目:四则运算web
1)Coding.Net项目地址 https://git.coding.net/DandelionClaw/WEB_Calculator.git 注:本项目为web端,并且需要连接SQL Server ...
- Week2-作业一——《构建之法》三章精读之想
Week2-作业一——精读<构建之法> 前言 其实我本人是不经常看书的,电子书倒是看了不少,实体书真的不经常看,但是为了这次作业的需求,我还是选择静下心来阅读一下这本<构建之法> ...
- Internet History, Technology and Security (Week 2)
Week 2 History: The First Internet - NSFNet Welcome to week 2! This week, we'll be covering the hist ...
- beta 发布的相关评论
1. 礼物挑选小工具 飞天小女警 这个项目的创意独具匠心,贴近实际,令人耳目一新,网站的页面也是玫红色的,配色让人感到很温馨,对礼物的筛选方式很有趣,使用的记录特殊日子的方法来提醒自己挑选礼 ...
- sublime 对vue的高亮显示
前提概要: sublime的下载地址:http://www.sublimetext.com/ notepad++下载地址:https://notepad-plus-plus.org/ .vue的文件在 ...
- Collection List区别
Collection是无序的,比如一大群人在广场上,你不可能说某某人是第一个,某某人是第二个 List是有序的,比如一群人从高到矮排了队,你就能说这人是第一个,这人是最后一个 因此Collection ...
- 第215天:Angular---指令
指令(Directive) AngularJS 有一套完整的.可扩展的.用来帮助 Web 应用开发的指令集 在 DOM 编译期间,和 HTML 关联着的指令会被检测到,并且被执行 在 AngularJ ...