目前有个项目,希望部分应用能运行在system uid下,但是这部分应用是第三方的,我们无法去修改这些应用的属性,因此考虑在framework层对这些特定的应用进行处理。
我们先从底层去找起,看看应用的uid是如何设置下来的。
Android的Java应用基本都是通过ZygoteProcess来启动一个新的process:
Zygote创建应用进程时是收到了AMS的uid参数的,从此处逆推回去,溯源找到这个参数传递的地方:
uid是从ApplicationInfo.uid中获取到的。AMS启动应用进程时设置的uid我们暂且先不研究,我们主要从这条线索往上走,看看什么样的应用uid是为system的。
应用package的uid实际上是由两个部分决定的,一个是普通的应用,一个是sharedUserId。我们知道,如果应用在AndroidManifest.xml中配置:
那么应用的uid就为system,我们先来看一下这部分代码的逻辑。
在PackageManagerService初始化时,就已经将系统的一部分自带的sharedUser添加到系统中:
那么使用的地方在哪呢,在PackageParser解析package的时候就使用到了:
以上就是本篇文章【AndroidP应用uid的设置过程】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/22817.html
动态
相关文章
文章
同类文章
热门文章
栏目首页
网站地图
返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多