安卓从入门到进阶第八章(pm命令)
发布日期:2021-06-29 15:28:45 浏览次数:2 分类:技术文章

本文共 1001 字,大约阅读时间需要 3 分钟。

640?wx_fmt=jpeg

上一节留了个疑问,pm 命令给一个应用授予某个权限呢?它的代码流程是怎样的呢?

我们这节来说说这个。

使用 adb shell 进来,输入 pm 查看帮助

640?wx_fmt=png

我们常用的就是 pm path 查找路径

pm list packages 列出所有的信息

pm clear 加上包名是清理应用数据,应用清理数据结束的时候,会触发应用重启,但是core应用是不会重启的。

pm enable 是使能某个组件的,一般和disable一起使用,来测试功能。

pm grant 包名 +权限 给某个应用授予某个权限

pm revoke 包名+权限 给某个应用去掉某个权限

我们这一节来分析pm命令的相关代码,于是我们找到pm,这个在/system/bin/

cat pm

640?wx_fmt=png

这个是我手机的显示,这个是7.0项目的。9.0这个里面已经有变化了。

640?wx_fmt=png

那我们就简单的讲下这个7.0的,9.0的自行分析就行(cmd.cpp)

exec app_process $base/bin com.android.commands.pm.Pm "$@"

这个之前很早写过一个文章:

分析过这个。

这里简单说下,这个就是启动一个app_process,然后执行com.android.commands.pm.Pm的main方法,参数是我们pm后面跟的内容。

所以这里我们要找下pm.java

640?wx_fmt=png

看这里的main方法,然后可以看到是执行了run,继续查看即可。

640?wx_fmt=png

我们就看下path这个方法吧,也就是 runPath,

640?wx_fmt=png

这里取到参数,然后调用displayPackageFilePath,我们继续查看:

640?wx_fmt=png

这里我们测试一个

640?wx_fmt=png

这些命令,实际上都会走到pms的一些方法,一些系统提供的调用,那么pm命令的很多东西,就可以封装成一个工具,帮助自己查看应用的一些参数。

也就是要做跟包相关的app的时候,可以从这里招到一些实现,进行参考。

大家可以把pm.java整体看完,可以把pms的基础功能怎么实现,怎么调用掌握个七七八八,然后学完了pm,可以去看am了。

如果am看完了,就可以进入wm了,可以学习这个,熟悉常用的命令以及实现方法。

好了,今天就说到这里了,我们每节讲一些简单的知识,把一个东西的逻辑讲通,方法很重要,思路很重要。

那么又有下一节的内容了,系统不断的弹出一个界面,我想知道是谁拉起来的,该怎么分析呢?

我们下一节来讲这个。

推荐你读:

640?wx_fmt=jpeg

转载地址:https://codegg.blog.csdn.net/article/details/99688098 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:程序员有了孩子,老大叫玲玲,老二叫玲依,老三叫...
下一篇:节奏很重要

发表评论

最新留言

不错!
[***.144.177.141]2024年04月25日 18时30分37秒