以下链接简要介绍了android中的软件包安装过程.
http://java.dzone.com/articles/depth-android-package-manager
我很想知道如何在安装过程中确定应用程序的UID,具体取决于设置其清单文件中的权限.
还有platform.xml(在/ frameworks/base/data/etc目录中为4.0 ICS源代码)文件,其中包含与gid相关联的权限列表.描述说
以下标记将低级别组ID与权限名称相关联.通过指定这样的映射,您说任何授予给定权限的应用程序进程也将运行并附加到其进程的给定组ID,因此它可以执行该组允许的任何文件系统(读取,写入,执行)操作.
以类似的方式,还有一个分配给特定uid的高级权限列表.
我的问题是,当安装了具有权限X,Y,Z的应用程序时,如何从此platform.xml的映射中指定其访问权限
此外,每次运行应用程序时,映射都会在每个时刻发生(从Android的初始设计看起来似乎不对,除非有更新,否则无法更改应用程序权限).因此,如果是这样的情况,它会存储说这个应用程序应该运行这样的访问或类似的这样的uid.
我希望我的问题清楚,如果您需要更多信息,请告诉我.我只是想了解更多有关Android操作系统内部工作原理的信息.
谢谢
应用程序的UID不依赖于所请求权限的集合.一般情况下,在安装过程中,PackageManager会从一个集合中为应用程序分配一个唯一的UID [FIRST_APPLICATION_UID; LAST_APPLICATION_UID]
(实际上,随着多用户支持的引入,此过程略有改变):
Android系统为每个Android应用程序分配一个唯一的用户ID(UID),并在单独的进程中以该用户身份运行它.
您所谈论的是基于权限分配给应用程序的一组有限的GID(组ID).例如,为了限制应用程序对网络接口的访问,Linux内核中添加了一个特殊的补丁,只有当此进程具有特殊的硬编码GID时,才允许进程创建网络套接字.因此,在安装应用程序期间,如果用户接受权限"android.permission.INTERNET",则PackageManager会为此应用程序分配一个特殊的GID(基于platform.xml
文件中的值).在此应用程序启动期间,此应用程序的进程已设置为值.因此,应用程序获得了创建套接字的权利.
其他权限在Android Framework级别上实施.