java AndroidPermission:向后兼容性。仅允许访问使用旧版本“我的应用”的应用(强制执行新版本权限)
如何授予对正在使用我的更新应用程序(较新版本)的应用程序的访问权限,这些应用程序将强制执行权限
假设我的应用程序名为ABC,版本为0.1
设备上很少有应用程序使用ABC应用程序提供的服务(比如XZ)
现在,我的公司认为我们应该公开使用XZ服务的许可
根据这一点,我们已在版本0.2中强制执行许可PQ。现在,对于使用我们的服务XZ的应用程序,他们应该在清单文件中提到PQ权限
但问题是,升级后,使用0.1版的应用程序将无法再使用我们的服务
我知道使用XZ服务的所有应用程序是什么
我们如何解决向后兼容性问题
我在网上查得够多了,但运气不好
如果你面对同样的问题并找到了解决办法,请帮助我
欢迎任何变通解决方案
# 1 楼答案
联系这些应用程序的开发人员,警告他们即将到来的权限要求,并鼓励他们提前更新应用程序
或者,不要通过权限保护你的应用程序。如果存在一组已知的有限的客户端应用程序,并且您正在使用兼容的通信机制(例如,基于AIDL的绑定),那么您可以使用
getCallingUid()
找出请求的客户端,并根据已知应用程序的白名单对其进行验证。您甚至可以检查公共签名密钥是否与预期值匹配,以帮助抵御客户端的黑客版本另一种可能性是对同一功能有两个单独的服务入口点:
未经许可,0.1版与今天一样工作
0.2版本不仅需要
<uses-permission>
元素,还需要更改服务的标识(例如,用于查找服务的Intent
的不同操作字符串)这允许您在不破坏旧应用程序的情况下开始加强安全性。然后,您可以提供一个弃用窗口,让0.1客户端在最终完全删除0.1入口点(或者至少用相同的权限保护它)之前有时间移动到0.2
最有可能的是,还有其他的模式——这些都是我脑子里想不出来的模式