【问题标题】:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE error during app installation应用安装期间的 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误
【发布时间】:2018-08-12 20:50:31
【问题描述】:

准确的错误信息是什么?

F-Droid 显示的错误信息是“新包正在请求一个已安装在设备上且没有匹配签名的共享用户。”。错误代码是 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE / -8。

我什么时候遇到这个问题?

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

我尝试过什么来解决这个问题?

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

可能原因:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    如何解决:

    警告:这是解决此问题的一种肱二头肌方法。它还需要 root 访问权限。

    基于用户 tweakradje 在 xda-developers 上的 one answer,我发现以下内容适合我:

    1. 将 /data/system/packages.xml 复制到其他位置或您的计算机。

    2. 使用文本编辑器对其进行编辑,并删除以应用程序包 ID 作为名称属性的 xml 块。在这种情况下应用程序"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”)。

    进一步阅读共享用户:

    【讨论】:

      【解决方案2】:

      在没有 root 访问权限的情况下解决了问题:

      在 Google Play 中卸载 termux 并尝试从 F-重新安装后,我还遇到了“错误 (-8):新软件包请求了一个已安装在设备上且没有匹配签名的共享用户。”机器人。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多