android - sharedUserId 是否需要多个应用程序的相同签名密钥库?
问题描述
我需要在多个应用程序之间共享 SharedPreference。我找到了这种分享 SharedPreference 的方式。但我不确定我是否严格需要使用相同的密钥库文件对两个 APK 进行签名。
官方页面对此几乎没有描述。
但是,如果两个或多个应用程序的此属性设置为相同的值,则它们都将共享相同的 ID——前提是它们的证书集相同。
provided that their certificate sets are identical
这是否意味着仅用于发布密钥库?
请确认我是否需要使用相同的密钥签名才能发布 APK。
解决方案
是的,在您的应用程序中使用具有相同 uid 的 sharedUserId 要求它们使用相同的密钥进行签名。请注意,多个密钥可以存储在同一个密钥库中,您需要使用相同的私钥。
在将应用程序上传到 Playstore 之前,您可以使用以下方法验证应用程序是否由相同的密钥签名:
apksigner 验证 --verbose --print-certs myapp.apk
对于共享相同 uid 的所有应用,该命令的输出(将 myapp.apk 替换为您的应用)需要相同。
否则,我实际上建议不要使用 sharedUserId 并找到在应用程序之间共享信息的不同方式。尝试内容提供商或其他一些 IPC 机制。
推荐阅读
- angular - 在 Angular HTML 输入变量中连接
- machine-learning - TensorFlow 2 XOR 实现
- android - 当应用程序处于后台时,变量保持其值多长时间?
- java - 当达到测试超时时,Maven 肯定会失败构建,即使失败时设置为 true
- c# - 如何记录所有 Rest Api(ApiController) 方法的输出?
- c++ - 如何在 clang libtooling 中启用 try-catch?
- python - How to access the properties of one specific patch from subplot in matplotlib
- python - Python:上下文管理器“生成器”没有实现 __enter__ 和 __exit__
- aws-codepipeline - 我应该如何在我的 CDK 构建脚本中使用来自 aws ECR 存储库的基于 Windows 的自定义构建工具 docker 映像作为环境
- javascript - 如果所有子复选框都未选中,如何取消选中父复选框,反之亦然?