Pm命令用法

Pm命令用法

http://gityuan.com/2015/10/31/binder-prepare/


一、Pm命令

命令格式:

pm <command>

命令列表:

命令功能实现方法
list packages列举app包信息PMS.getInstalledPackages
install [options] <PATH>安装应用PMS.installPackageAsUser
uninstall [options]<package>卸载应用IPackageInstaller.uninstall
enable <包名或组件名>enablePMS.setEnabledSetting
disable <包名或组件名>disablePMS.setEnabledSetting
hide <package>隐藏应用PMS.setApplicationHiddenSettingAsUser
unhide <package>显示应用PMS.setApplicationHiddenSettingAsUser
get-install-location获取安装位置PMS.getInstallLocation
set-install-location设置安装位置PMS.setInstallLocation
path <package>查看App路径PMS.getPackageInfo
clear <package>清空App数据AMS.clearApplicationUserData
get-max-users最大用户数UserManager.getMaxSupportedUsers
force-dex-opt <package>dex优化PMS.forceDexOpt
dump <package>dump信息AM.dumpPackageStateStatic
trim-caches <目标size>紧缩cache目标大小PMS.freeStorageAndNotify

pm命令实的实现方式在Pm.java,最后大多数都是调用PackageManagerService相应的方法来完成的。disbale之后,在桌面和应用程序列表里边都看到不该app。

二、详细参数

2.1 list packages

查看所有的package

list packages [options] <FILTER>

其中[options]参数:

  • -f: 显示包名所关联的文件;
  • -d: 只显示disabled包名;
  • -e: 只显示enabled包名;
  • -s: 只显示系统包名;
  • -3: 只显示第3方应用的包名;
  • -i: 包名所相应的installer;
  • -u: 包含uninstalled包名.

规律: disabled + enabled = 总应用个数; 系统 + 第三方 = 总应用个数。

比如:查看第3方应用:

pm list packages -3

又比如,查看已经被禁用的包名。(国内的厂商一般把google的服务禁用了)

pm list packages -d

<FILTER>参数:

当FILTER为不为空时,则只会输出包名带有FILTER字段的应用;当FILTER为空时,则默认显示所有满足条件的应用。

比如,查看包名带google字段的包名

pm list packages google

2.2 pm install

安装应用

pm install [options] <PATH>

其中[options]参数:

  • -r: 覆盖安装已存在Apk,并保持原有数据;
  • -d: 运行安装低版本Apk;
  • -t: 运行安装测试Apk
  • -i : 指定Apk的安装器;
  • -s: 安装apk到共享快存储,比如sdcard;
  • -f: 安装apk到内部系统内存;
  • -l: 安装过程,持有转发锁
  • -g: 准许Apk manifest中的所有权限;

<PATH>参数:

该参数是必须的,是指需要安装的apk所在的路径。

2.3 其他参数

pm list users //查看当前手机用户
pm list libraries //查看当前设备所支持的库
pm list features //查看系统所有的features
pm list instrumentation //所有测试包的信息
pm list permission-groups //查看所有的权限组
pm list permissions [options] <group> 查看权限
	-g: 以组形式组织;
	-f: 打印所有信息;
	-s: 简要信息;
	-d: 只列举危险权限;
	-u: 只列举用户可见的权限。

<think>好的,用户想了解adb pm命令的功能、用法和示例。首先,我需要回忆一下adb和pm的关系。根据之前的引用内容,adb是Android Debug Bridge,用于与设备通信,而pm是包管理工具,全称package manager。pm工具通常通过adb shell来调用,比如adb shell pm list packages,用来列出应用包名。 用户可能已经知道adb的基本用法,现在需要更深入的pm命令细节。引用中提到,pm可以执行安装、查询包信息、管理权限等。比如安装应用可能用adb install,但pm也有相关命令?或者pm更多用于查询和管理已安装的包? 需要确认pm的具体功能。根据引用4,pm工具用于应用的安装、查询包信息、系统权限控制。但实际中,安装通常用adb install,而pm可能在shell内部使用更多。比如pm list packages可以列出所有包,-3选项列出第三方应用,这在引用3中有详细说明。 接下来要组织信息,分功能点讲解。例如,功能包括列出应用、安装卸载、权限管理、清除数据等。每个功能下给出用法和示例。例如,列出包名的命令,用户可能需要知道不同参数的作用,如-s系统应用,-3第三方应用。 还要注意用户可能的实际应用场景,比如开发测试时需要快速获取当前活动的包名,可以用adb shell dumpsys window | findstr mCurrentFocus,这在引用3中提到过,但属于adb命令的一部分,而pm更侧重于包管理本身。 需要确保示例准确,比如pm list packages -3的正确性。同时,引用中的信息需要正确标注,比如引用3和引用4关于pm命令的部分。可能还需要解释pm和adb的关系,即pm是在设备端执行的工具,通过adb shell来调用。 用户可能混淆adb命令pm命令,需要明确区分。例如,adb install是直接安装apk,而pm install可能需要指定参数,或者pm主要用于其他管理任务。需要查证pm是否支持安装命令,或者是否主要通过adb install来处理安装。 根据引用4,pm工具用于安装和查询,但实际常用的是adb install,而pm可能在内部处理。可能需要指出pm的install和adb install的区别,或者说明pm更多用于系统级别的包管理,需要root权限? 另外,用户可能需要知道如何获取包名,以便后续操作,比如卸载或清除数据。此时pm list packages和相关选项就很有用。示例中可以给出具体命令,如adb shell pm list packages -s,并解释输出结果。 最后,确保回答结构清晰,分点列出功能、用法和示例,并引用正确的来源。可能还需要提醒用户某些命令需要特定权限,或者设备需要开启调试模式等注意事项。</think>### adb pm 命令详解 #### 一、功能定位 `pm`(Package Manager)是 Android 系统内置的包管理工具,通过 `adb shell` 调用,主要用于: 1. **应用包管理**:安装、卸载、查询应用包信息 2. **权限控制**:查看和授予应用权限 3. **系统级操作**:清除数据、禁用/启用系统应用等[^4] #### 二、核心用法与示例 ##### 1. 列出应用包名 - **基本语法**: ```bash adb shell pm list packages [参数] ``` - **常用参数**: - `-s`:仅显示系统应用 `adb shell pm list packages -s` - `-3`:仅显示第三方应用 `adb shell pm list packages -3` - `-f`:显示 APK 路径 `adb shell pm list packages -f` - **示例输出**: `package:com.android.settings` 表示包名为 `com.android.settings`[^3] ##### 2. 获取当前活动应用包名 - **命令**: ```bash adb shell dumpsys window | grep mCurrentFocus # Mac/Linux adb shell dumpsys window | findstr mCurrentFocus # Windows ``` - **输出解析**: `mCurrentFocus=Window{... com.tencent.mm/com.tencent.mm.ui.LauncherUI}` 包名为 `com.tencent.mm`[^3] ##### 3. 安装与卸载 - **静默安装(需 root)**: ```bash adb shell pm install /sdcard/app.apk ``` - **卸载应用**: ```bash adb shell pm uninstall com.example.package ``` 注:普通卸载需保留数据添加 `-k` 参数[^3] ##### 4. 包信息查询 - **查看应用版本**: ```bash adb shell pm dump com.android.chrome | grep versionName ``` - **查看安装路径**: ```bash adb shell pm path com.android.chrome ``` ##### 5. 权限管理 - **查看应用权限**: ```bash adb shell pm list permissions -g -d ``` - **授予权限**: ```bash adb shell pm grant com.example.app android.permission.CAMERA ``` ##### 6. 高级操作 - **清除应用数据**: ```bash adb shell pm clear com.example.app ``` - **禁用系统应用**: ```bash adb shell pm disable-user com.android.bluetooth ``` 注:部分操作需要 root 权限[^4] #### 三、工作原理 `pm` 命令通过 `adb shell` 发送到设备的 `adbd` 守护进程,由 Android 系统的 `com.android.server.pm.PackageManagerService` 具体执行操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值