您的位置:首页 > 大数据 > 人工智能

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

2016-05-25 16:34 316 查看
Android studio中想要运行程序,点击运行后程序安装失败,报出如下异常:



原因:在manifest中设置了 .android:sharedUserId="android.uid.system" 属性,但是没有相应的系统签名。



在apk安装时,系统默认会给每个app分配一个uid,在/data/system/packages.xml文件中可以查看到所有安装的app的uid。在默认情况下每个app有自己的uid,只能够访问自己的数据,如果多个app设置了相同的uid,他们就能运行在同一个进程中,就能够实现数据的共享。

当程序想要获取系统权限时,将android:SharedUserId 属性设置为”android.uid.system",可以让程序运行在系统进程中,能够实现系统时间的修改。 但是只是设置sharedUserId并不能够实现去获取系统权限,想要获取系统权限还必须要有相应的签名。

关于程序安装:
http://www.miui.com/thread-759958-1-1.html
应用安装涉及到如下几个目录:

[align=left]system/app 系统自带的应用程序,无法删除[/align]
data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录

[align=left]data/data 存放应用程序的数据[/align]

Data/dalvik-cache 将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)

[align=left]安装过程:[/align]

复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。

[align=left]卸载过程:[/align]

删除安装过程中在上述三个目录下创建的文件及目录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: