520 那朵灿烂的奇葩
快去救列宁
关注数: 27 粉丝数: 16,589 发帖数: 4,230,517 关注贴吧数: 2,293
app覆盖安装的时候,会改变UID吗? UID和sharedUID并不是一回事,题主不要被误导了。 1.每个软件安装在手机的时候,手机都会分配一个UID为唯一标示,当软件App覆盖安装的时候,这个UID会发生变化吗?是不是固定不变的? --------一般情况下不会变化,除非出现错误或者异常. 这个是PackageManagerService在scanPackageLI中实现的,/data/system/packages.xml也就是packageSettings中保存了package的信息,其中就包括了uid,在覆盖安装的第二部覆盖中,会读取packageSetting中Uid赋给新安装的应用 pkg.applicationInfo.uid = pkgSetting.appId; 2.如果系统在app覆盖安装的时候UID发生变化了,是否合理?如果不合理,那不合理的原因是什么? -----------不合理,你要知道,data下面的/data/data/com.douniwan.douniwan/这个目录的owner就是你的应用(你可以ls下看看),如果uid发生变化了,那么新安装后的应用就会对这个目录失去读写权限而导致问题(如保存的用户数据没了),因此,在Pms安装的过程中会对这一异常进行检查,如果发现UID不匹配就会报INSTALL_FAILED_UID_CHANGED异常。 然后,对于特殊的app,如system的app,pms还会进行修复,也就是删除这个更新的包,重新创建data目录。 3.目前对于Android系统而言,有没有一些明确的规则规定系统ROM在app覆盖安装时,UID必须固定不发生变化 ------如上面的回答1和2,现有的机制就是保证。 sharedUid是另外一种权限控制,不要搞混淆了。
1 下一页