同一开发者签名的Android应用间无主数据共享方案咨询
Android同签名多应用无归属字符串共享可行方案
最优适配方案:签名级权限保护的共享ContentProvider SDK
这是完全匹配你需求的实现方案,核心逻辑如下:
- 首先定义全局唯一的自定义签名权限,在SDK的AndroidManifest中声明:
<permission android:name="com.yourcompany.custom.permission.SHARE_SIGNED_DATA" android:protectionLevel="signature" /> <uses-permission android:name="com.yourcompany.custom.permission.SHARE_SIGNED_DATA" />
该权限的保护级别为signature,只有和你方应用签名完全一致的应用才能成功申请,天然拦截所有第三方应用的访问请求。
- 开发通用轻量SDK,所有你方应用都集成该SDK:
SDK内部自带无UI的迷你ContentProvider,每个应用集成后都会自动生成属于自己的Provider实例,authority按固定前缀+当前应用包名的规则生成,避免多应用安装时的authority冲突。 - SDK封装三层读写逻辑,完全消除数据归属方限制:
- 写入数据时:自动遍历设备上所有已安装的同签名应用,将数据同步写入所有应用的Provider存储区,任意应用写入的数据都会同步到所有同签名应用本地
- 查询数据时:遍历所有同签名应用的Provider,只要任意一个存有目标数据就返回结果,就算某一个应用被卸载,其他应用的备份数据不受影响
- 删除数据时:同步删除所有同签名应用Provider内的对应数据
方案优势
- 完全匹配你的需求:无需用户手动交互、仅同签名应用可访问、无单一数据归属方,逻辑和iOS Keychain的同团队ID共享能力高度对齐
- 兼容性极强:支持Android 4.4及以上所有系统版本,不需要修改已上线应用的任何原有配置,也无需用到已废弃的SharedUserId
- 可扩展性高:后续如果需要共享更复杂的数据结构,只需要修改SDK的Provider序列化逻辑即可,不需要上层应用做适配
可选增强配置
如果需要更高的安全等级,可以在SDK内部增加一层加密逻辑:提取你方应用签名的SHA256哈希值作为加密密钥,把共享的字符串数据对称加密之后再存入Provider,即使出现极端的权限绕过场景,第三方拿到的也是密文,无法获取原始数据。
内容的提问来源于stack exchange,提问作者MobileDev
相关产品推荐
相关产品推荐

