Android-许可:向后兼容。仅授予使用我的应用程序旧版本的应用程序的访问权限(强制执行新版本权限)

Android-Permission: Backward compatibility. Give access only to apps which are using old version of my app(new version permission enforced)

如何授予使用我更新的应用程序(较新版本)的应用程序的访问权,其中强制执行权限。

假设我的应用名称是ABC,版本是0.1

设备上很少有应用程序使用 ABC 应用程序提供的服务(比如 XZ)。

现在,我的公司认为我们应该公开使用我们的 XZ 服务的权限。

据此,我们在版本 0.2 中强制执行了 PQ 权限。现在开始使用我们的服务 XZ 的应用程序,他们应该在他们的清单文件中提到 PQ 权限。

但问题是,升级后,使用0.1版本的应用程序将无法再使用我们的服务。

我知道所有使用 XZ 服务的应用程序是什么。

我们如何解决向后兼容性问题?

我已经在网上查了很多,但没有运气。

如果您遇到同样的问题并找到了解决方案,请帮助我...

欢迎任何解决方案。

How we can solve the backward compatibility issue ?

联系这些应用的开发者,警告他们即将到来的权限要求,并鼓励他们提前更新他们的应用。

或者,不要通过权限保护您的应用。如果存在一组已知的有限客户端应用程序,并且您正在使用兼容的通信机制(例如,基于 AIDL 的绑定),则可以使用 getCallingUid() 找出请求的客户端,并对其进行验证针对已知应用程序的白名单。您甚至可以检查 public 签名密钥是否与预期值匹配,以帮助抵御客户端的黑客版本。

另一种可能性是对同一功能有两个单独的服务入口点:

  • 0.1 版本在没有许可的情况下像今天一样工作

  • 0.2 版本不仅需要 <uses-permission> 元素,还需要更改服务的标识(例如,用于查找的 Intent 的不同操作字符串服务)

这使您可以在不破坏旧应用程序的情况下开始加强安全性。然后,您可以提供弃用 window,为 0.1 客户端移动到 0.2 留出时间,然后最终完全删除 0.1 入口点(或者,至少,以相同的权限保护它)。

很可能还有其他模式 - 这些是我头脑中的模式。