美文网首页
Linux pm命令学习

Linux pm命令学习

作者: 过期的薯条 | 来源:发表于2020-12-06 10:05 被阅读0次

1.引言

之所以特意记录下这个知识点,是因为自己工作中犯过的错误。我在adb push 到system/app/ 。推送成功 但是重启之后,发现apk并没有生效。在同事提醒下,使用pm path 包名 查看到原因当前运行的apk,不是我那个目录下的。而是data下面的base.apk。难怪会没得反应。所以,我得好好学习下pm命令知识。

转载:GitYuan Pm命令用法

2.正题

2.1 命令列表

pm <command>
命令 功能 实现方法
list packages 列举app包信息 PMS.getInstalledPackages
install [options] <PATH> 安装应用 PMS.installPackageAsUser
uninstall [options]<package> 卸载应用 IPackageInstaller.uninstall
enable <包名或组件名> enable PMS.setEnabledSetting
disable <包名或组件名> disable PMS.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.2 pm 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

<FILTER>参数:

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

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

pm list packages launcher

会将带有“launcher” 字段的packages 输出出来。

2.3 pm install命令

安装应用

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

相关文章

网友评论

      本文标题:Linux pm命令学习

      本文链接:https://www.haomeiwen.com/subject/okcowktx.html