0

我已经浏览了关于这两个主题(自定义权限和应用签名)的可用文档和 SO 帖子,我的理解是:

  1. 使用相同密钥签名的应用可以使用签名级权限
  2. 自定义权限只能在一个地方定义,并且需要先安装声明权限的应用
  3. 如果应用共享相同的签名,则可以在多个应用中定义自定义权限

现在我需要在一个应用程序中定义一些组件,这些组件将在另一个使用相同密钥签名的应用程序中使用,但据此不需要定义自定义权限并且可以进行签名检查

如果该功能仅适用于使用与提供应用程序相同签名的应用程序,则您可以通过使用签名检查来避免定义自定义权限。当您的一个应用程序向您的另一个应用程序发出请求时,第二个应用程序可以在遵守请求之前验证两个应用程序是否使用相同的证书进行签名。

我不明白签名检查是什么意思,有没有办法在该组件上放置一个检查清单,或者我必须以编程方式检查它?如果是后者,不是更好地在两个应用程序中定义自定义权限(以否定安装顺序问题)吗?

4

1 回答 1

0

有没有办法在该组件上放置一个签入清单

不,对不起。

我必须以编程方式检查它吗?

是的。这对旧项目演示了一个绑定服务和一个检查服务签名的客户端。这些项目包含在这本免费旧书的一章中。该示例在现代 Android 中存在问题,因为一个应用程序可以有多个签名。但是,它所依赖的SiganturesUtil显示了如何从PackageManager已安装的应用程序中获取签名。然后,您可以将它们与预期值进行比较,以确定您是否确实在与预期的应用程序交谈。

如果是后者,不是更好地在两个应用程序中定义自定义权限(以否定安装顺序问题)吗?

签名检查更加灵活——它们不限于使用同一个签名密钥签名的两个应用程序。再加上自定义权限的历史问题,可能是 Google 建议在该页面上对自定义权限进行签名检查的原因。

于 2022-02-09T13:28:23.720 回答