F-Droid 显示的错误消息是“新软件包正在请求已安装在设备上且没有匹配签名的共享用户。”。错误代码为 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE / -8。
尝试从 F-Droid 安装应用程序“Termux”时。本质上是安装 apk,而不是从 Play 商店安装。
我之前从 Play 商店安装了该应用程序,然后将其卸载,然后尝试从 F-Droid 重新安装它。在我看来,这是最可能的原因,尽管我无法在其他设备上重现它。
(抢占我的答案) 事实证明 /data/system/packages.xml 仍然包含应用程序的共享用户条目,包括签名。这解释了为什么我无法安装其他 apk,因为它们是使用不同的密钥签名的,尽管它们是相同的应用程序和开源代码。
无需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:应用程序数据也被删除
警告:这是解决此问题的一种臂法。它还需要 root 访问权限。
基于用户在 xda 开发者上的一个答案tweakradje我发现以下内容对我有用:
将 /data/system/packages.xml 复制到其他位置或您的计算机。
使用文本编辑器对其进行编辑,并删除以应用程序包 ID 作为名称属性的 xml 块。在这种情况下,应用程序“Termux”的示例:
<shard-user name="com.termux" userId="10102">
<sigs count="1">
<cert [...]/>
</sigs>
</shared-user>
将修改后的版本复制到/data/system/packages.xml并覆盖旧版本。
清除 dalvik 缓存(“adb shell rm /data/dalvik-chache/*”或通过恢复)
重启
安装这次应该经过的apk
这很可能不适用于系统包(以“android”开头的包,例如“android.uid.system”)。