Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]及相关知识

时间:2024-04-14 09:01:05

Android studio 真机运行,出现如下提示:

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]及相关知识

查看报错信息:

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]及相关知识

出现这样的情况,是由于在项目AndroidManifest.xml中,设置了

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]及相关知识

解决这个问题,两种解决办法,办法一,非常简单,非常暴力,直接删除android:sharedUserId="android.uid.system"就ok了;办法二,签名,这个详细的一会再说。

对于AndroidManifest.xml文件,简书关于AndroidManifest.xml详解:https://www.jianshu.com/p/f535c0f6f65f 的介绍,我在这里就不做过多赘述。在mainfest文件中,有一个”android:shareUserId“的属性,这个是我在这里要想分享的知识点。

apk在安装时,有一个userid的标志。它的特点是:作为apk身份的标识符;不同apk(用户)间相互访问数据默认是禁止的。这个类似于iOS的BundleID,但与它不同。那么,对于不同apk之间访问数据,该怎么办呢?有两个方法提供数据相互访问:(1)使用Share Preference./Content Provider ,apk通过指定接口和数据供其它apk读取,需要开发者实现接口和指定share的数据(2)在配置文件mainfest中配置同一userid,通过共享userid,运行在同一进程中,可以互相访问数据。对于设置userid,就是上文中提到的Android为我们提供的这个属性——”android:shareUserId“,而设置这个属性后,运行apk,需要相应的签名。否则会出现报错,运行失败。这是因为:基于安全考虑,两个apk需要有相同的签名,否则没有验证,应用程序一旦设置了shareuserid,当程序被**,其它应用也可以访问我们的数据,数据不安全设置共享也就没有多大意义了。

apk之间数据共享,需要注意:相同userid,相同签名,在同一进程中运行,需设置相同的”android:process“(该属性,在application标签中l)。