Androidadb命令中pm工具的作用及用法说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Androidadb命令中pm⼯具的作⽤及⽤法说明
玩安卓的⼈都知道adb,玩adb的⼈都知道install和uninstall,但是为什么adb shell pm install packagename命令中间要有⼀个pm?pm是什么意思,起什么作⽤的?这个问题恐怕不是每个⼈都能回答的出来的。

pm⼯具为包管理(package manager)的简称,可以使⽤pm⼯具来执⾏应⽤的安装和查询应⽤包的信息、系统权限、控制应⽤。

pm⼯具是Android开发与测试过程中必不可少的⼯具,通常放在/system/bin/下。

在命令⾏模式下输⼊pm,系统给出的帮助⼿册如下:
usage: pm [list|path|install|uninstall]
pm list packages [-f] [-d] [-e] [-u] [FILTER]
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]
pm list instrumentation [-f] [TARGET-PACKAGE]
pm list features
pm list libraries
pm path PACKAGE
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
pm uninstall [-k] PACKAGE
pm clear PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
pm setInstallLocation [0/auto] [1/internal] [2/external]
....略去....
由此可见,pm⼯具单独使⽤时是没有意义的,它必须与相关命令⼀起使⽤,置于相应命令之前。

⽽其他命令如果没有加上pm 的前缀,则也同样不能使⽤。

⽐如,你可以在命令⾏输⼊⼀个list packages命令试试,系统会提⽰“list: permission denied!”也就是说,任何与应⽤包相关的命令必须是pm + “具体命令”的格式才有效,否则是⽆效的!
OK,说清了pm⼯具的基本⽤法,那么下⾯我们就来分析⼀下pm⼯具中常⽤的⼀些命令(所谓常不常⽤,是指我个⼈感觉,如有发现遗漏,请告知本⼈ ^_^):
⼀、查询类
list packages:列出设备中已经安装的所有应⽤包(包括系统应⽤和⽤户应⽤);
list features:列出所有硬件相关信息;
list libraries :列出当前设备⽀持的libs;
list users:列出系统上所有的users;
list permissions:列出所有已知的权限;
list ‘pkgname':列出指定包名的associated⽂件(APK存档⽂件)所在;
path ‘pkgname':查询package的安装位置。

⼆、操作类
install [-lrtsfd] [PATH]:安装命令;
** -l :锁定应⽤程序;
** -r:重新安装应⽤,且保留应⽤数据;
** -i:指定安装包的包名;
** -s:安装到sd卡;
** -f:安装到系统内置存储中(默认安装位置);
** -g:授予应⽤程序清单中列出的所有权限(只有6.0系统可⽤);
uninstall [options] ‘pkgname':卸载命令;
** -k:卸载应⽤且保留数据与缓存(如果不加-k则全部删除);
clear ‘pkgname' :对指定的package删除所有数据;
enable ‘pkgname' :使package或component可⽤。

(如:pm enable “package/class”);
disable ‘pkgname' :使package或component不可⽤。

(如:pm disable “package/class”);
grant ‘pkgname':授权给应⽤;
revoke ‘pkgname':撤销权限;
set-install-location ‘location':设置默认的安装位置。

其中0:让系统⾃动选择最佳的安装位置。

1:安装到内部的设备存储空间。

2:安装到外部的设备存储空间;
get-install-location :返回当前的安装位置。

返回结果同上参数选项;
create-user ‘USER_NAME' :增加⼀个新的USER;
remove-user ‘USER_ID' :删除⼀个USER;
补充知识:adb命令之pm hide 与 disable
pm disable <PACKAGE_OR_COMPONENT> :使package或component不可⽤。

(如:pm disable "package/class")(disable了指定的package,但是getComponentEnabledSetting该package⾥的components依然是enable状态的。

disable-user⼀样原理。

)需要root权限。

等效代码:
getActivity().getPackageManager().
setApplicationEnabledSetting(getActivity().getPackageName(),
PONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);//不杀死app,app进程终⽌后才会隐藏;0⽴即终⽌
pm hide <PACKAGE_OR_COMPONENT> :使package或component不可⽤。

hide disable
getPackageManager().getInstalledPackages
可见可见
(PackageManager.GET_UNINSTALLED_PACKAGES);
getPackageManager().getInstalledPackages
不可见可见
(PackageManager.GET_DISABLED_COMPONENTS);
getPackageManager().getInstalledPackages(0);不可见可见
pm lf不可见可见
pm list package -d不可见可见
pm list package -u可见可见
设置-应⽤管理已下载魅族安装app不可见魅族安装app不可见
设置-应⽤管理已全部魅族安装app不可见魅族安装app不可见
am start不可⽤不可⽤
以上这篇Android adb命令中pm⼯具的作⽤及⽤法说明就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

相关文档
最新文档