一、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 命令详解的更多相关文章

  1. android adb 命令详解

    ADB (Android Debug Bridge)  是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...

  2. Android下pm命令详解

    在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之. 0. Usage: ...

  3. Android下pm 命令详解

    Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之.0. Usag ...

  4. Android ADB命令详解

    adb的全称为Android Debug Bridge.是android司机经常用到的工具 . 你能在本篇文章中学到什么? adb基本指令 Shell AM&PM adb模拟用户事件 logc ...

  5. Android logcat命令详解

    一.logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用lo ...

  6. 转: android emulator 命令详解

    在命令行输入: emulator -help,即可显示emulator支持的所有命令. Android Emulator usage: emulator [options] [-qemu args] ...

  7. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  8. Android的logcat命令详解

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  9. adb shell 命令详解,android

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

随机推荐

  1. ES6----Proxy(一)

    Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. 听起来好像很绕,可以简单这样理解,Proxy相当于 ...

  2. scrapy有用的(代理,user-agent,随机延迟等)

    代理 方法一(待测试) 见scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware import os # 设置相应的代理用户名密码,主机和 ...

  3. Beta冲刺第二周王者荣耀交流协会第五次会议

    1.立会照片 成员:王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:王磊 2.时间跨度: 2017年11月21日 15:00 — 15:17,总计17分钟. 3.地点: 一食堂 ...

  4. Daily Scrum10 11.14

    昨天的任务已经完成,但是我们在完成任务的过程中确实遇到了困难.昨天我们发现无法连接sqlserver的时候,给罗杰老师发了邮件.老师也给我们提出了建议,给我们提供了一些参考.所以今天大家都在研究如何解 ...

  5. 20162328蔡文琛week08

    学号 20162328 <程序设计与数据结构>第X周学习总结 教材学习内容总结 错误和异常代表不常见的或不正确处理的对象. 抛出异常时输出的消息提供了方法调用栈的轨迹. 每个catch子句 ...

  6. 修复webpack自动刷新页面慢的问题

    新建.babelrc文件,配置如下 { "presets": [ "es2015" ], "ignore":[ "react-ro ...

  7. bata7

    目录 组员情况 组员1:胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:何宇恒 组员11:刘一好 展示组内最新 ...

  8. Week2-作业1

    第一章:引用:如果一架民用飞机上有一个功能,用户使用它的概率是百万分之一,你还要做这个功能么?      选择之后,这个功能是什么呢?谜底是飞机的安全功能.        个人认为,飞机的安全功能这个 ...

  9. Envoy如何打败Linkerd成为L7负载平衡器的最佳选择?

    本文转自:http://www.servicemesh.cn/?/article/41 作者:MIKE WHITE 翻译:姚炳雄 原文:Using Envoy to Load Balance gRPC ...

  10. oracle greatest(),least( ) ,coalesce()

    --场景1: select pt, greatest(wm), least(wm) from (select s.producttype pt, wm_concat(s.productid) wm f ...