Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

  • Post author:
  • Post category:其他


在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




应用安装涉及到如下几个目录:







system/app



系统自带的应用程序,无法删除




data/app




用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录





data/data



存放应用程序的数据




Data/dalvik-cache




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





安装过程:



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





卸载过程:



删除安装过程中在上述三个目录下创建的文件及目录。



版权声明:本文为mypotatolove原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。