我正在尝试拥有 2 个可以访问彼此数据的 Android 应用程序。我有两个正在试验的测试应用程序。我将每个人的“共享用户 ID”设置为 'com.gabysoft.sharedfiles' 。但是,当我签署第一个应用程序并尝试安装它时,出现错误:

11-05 16:50:33.422: ERROR/PackageManager(61): Package com.gabysoft.sharedfiles1 has no
signatures that match those in shared user com.gabysoft.sharedfiles; ignoring!

显然,我没有正确签名(我使用的是 Eclipse 的“导出签名的应用程序包”功能)。如何正确签署 .apk 文件,以免出现此问题?

谢谢

最佳答案

如果您设置了一个 sharedUserId,并从 Eclipse 将应用程序安装到您的设备上(在开发过程中,默认情况下,它使用调试 key 对其进行签名),您将在该签名 key 和 sharedUserId 之间创建一个永久绑定(bind)。 /data/system/packages.xml 以及 Dalvik 缓存保存与应用程序关联的共享用户 ID 的信息。然而,即使在关注 XDA 上的相关线程之后,我也没有找到一种方法来持续清除我的 GN 上的旧调试版本。

因此,如果您确实需要使用sharedUserId,您可以将任何固定字符串附加到sharedUserId 中,仅在开发和使用调试 key 时才在AnroidManifest.xml 中更改它。但是,您应该检查一下,您从未将其检入代码存储库或发布它,因为一旦您设置了 sharedUserId 并发布了应用程序,它就完成了。您绝不能更改它,否则您的应用程序将无法访问自己的文件并变得无法使用。

注意,sharedUserId 很棘手。有关可能的相关问题,请参阅此 blog post

编辑:我刚刚注意到这个问题有多老了,但我仍然认为有人可能会发现答案很有值(value),因为我在谷歌搜索时自己已经解决了这个问题。

关于android - 与 Android 共享用户 ID 和签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4109194/

10-10 18:24