应用安装期间发生INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误

时间:2018-08-12 20:50:31

标签: android

确切的错误消息是什么?

F-Droid显示的错误消息位于“新程序包正在请求已安装在设备上且没有匹配签名的共享用户”行中。错误代码为INSTALL_FAILED_SHARED_USER_INCOMPATIBLE / -8。

我何时遇到此问题?

尝试从F-Droid安装应用程序“ Termux”时。本质上是安装apk,而不是从Play商店安装。

我试图解决什么问题?

  • 在Stackoverflow中搜索解决方案
  • 为所有用户卸载应用程序/卸载应用程序
  • 从Play商店安装应用,然后再次将其卸载

可能的原因:

我以前曾在Play商店中安装过该应用,然后又尝试将其从F-Droid重新安装之前将其卸载。我认为这是最可能的原因,尽管我无法在另一台设备上复制
(抢先回答)事实证明,/data/system/packages.xml仍然包含该应用程序的共享用户条目,包括签名。这就解释了为什么我无法安装其他apk,因为尽管它们是相同的应用程序和开源,但它们是用不同的密钥签名的。

2 个答案:

答案 0 :(得分:0)

解决方法:

警告:这是解决此问题的臂膀方法。它还需要root权限

基于one answer用户tweakradje在xda-developers上的使用经验,我发现以下几点适用于我:

  1. 将/data/system/packages.xml复制到另一个位置或您的计算机。
  2. 使用文本编辑器对其进行编辑,然后删除以apps包标识为name属性的xml-block。在这种情况下,应用"Termux"的示例:

    <shard-user name="com.termux" userId="10102">
      <sigs count="1">
        <cert [...]/>
      </sigs>
    </shared-user>  
    
  3. 将修改后的版本复制到/data/system/packages.xml并覆盖旧版本。
  4. 清除dalvik缓存(“ adb shell rm / data / dalvik-chache / *”或通过恢复)
  5. 重新启动
  6. 安装这次应该执行的apk

注意:

这很可能不适用于系统软件包(以“ android”开头的软件包,例如“ android.uid.system”)。

对共享用户的进一步阅读:

答案 1 :(得分:0)

无需root权限即可解决问题:

在 Google Play 中卸载 termux 并尝试从 F-机器人。

手机没有root,所以上面建议的解决方案不可用。但是我注意到仍然安装了一些随附的 termux 应用程序,即 termux API、termux tasker 和 termux 样式。

卸载它们并清空几个可能相关的应用(包括 google play 商店、google play 服务和软件包安装程序)的缓存后,我能够从 F-Droid 安装 termux 以及随附的应用。