应用程序安装期间出现 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误

问题描述 投票:0回答:2

具体的错误消息是什么?

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

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

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

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

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

可能原因:

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

android
2个回答
3
投票

无需root访问即可解决问题:

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

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

卸载它们,并清空可能相关的系统应用程序的缓存和/或数据(通过 Android 设置),包括 google play 商店 (C)、google play 服务 (CD) 和软件包安装程序 (CD),我能够从 F-Droid 安装 termux 以及随附的应用程序。

C:应用程序缓存清空; CD:应用程序数据也被删除


2
投票

如何解决:

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

基于用户在 xda 开发者上的一个答案tweakradje我发现以下内容对我有用:

  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”)。

有关共享用户的进一步阅读:

© www.soinside.com 2019 - 2024. All rights reserved.