我正在通过亚马逊应用商店以及谷歌的应用商店发布一个应用程序。
Amazon 使用 APK 并使用他们自己的证书对其进行签名,但也为您提供了使用您的证书对修改后的 APK 进行签名的机会。
如果一个 APK 使用两个证书进行签名,并且只有一个证书可以升级(即,对于最初来自 Amazon 商店的安装,可以从 Google Play 获得升级)会发生什么?包管理器在升级之前是否需要两个证书的签名?或者任何单一的证书?还是其中一个证书优先?
我正在通过亚马逊应用商店以及谷歌的应用商店发布一个应用程序。
Amazon 使用 APK 并使用他们自己的证书对其进行签名,但也为您提供了使用您的证书对修改后的 APK 进行签名的机会。
如果一个 APK 使用两个证书进行签名,并且只有一个证书可以升级(即,对于最初来自 Amazon 商店的安装,可以从 Google Play 获得升级)会发生什么?包管理器在升级之前是否需要两个证书的签名?或者任何单一的证书?还是其中一个证书优先?
不久前,我通过电子邮件向 Amazon Appstore 开发支持人员发送了电子邮件,这是他们的回答:
在这种情况下,我们会审核您提交的内容并决定是否需要您的签名。如果我们认为是,我们将启用签名功能并向您发送说明,但如果我们认为不是,我们将用我们自己的签名覆盖您的签名。
所以他们确实删除了你的原始签名。自从收到电子邮件后,我现在只需提交我上传到 Google Play 的签名 APK 并让 Amazon 剥离证书并应用他们自己的证书。这节省了我为亚马逊编译未签名 APK 的时间。
附带说明:我认为不可能在具有两个不同证书的同一设备上安装应用程序/包。因此,您不应该同时安装来自 Google Play 和 Amazon Appstore 的应用程序。不过我可能是错的。
我做了一些研究。
https://groups.google.com/forum/#!topic/android-security-discuss/npRHQzzgErM
Redux:截至四年前,谷歌还不知道。
http://www.escapades-in-security.com/blog/2012/12/android-apk-supersignature.html
Redux:提出了一种要求签名集匹配才能执行操作的模式,因此可能需要对升级进行双重签名。
还没有确定性,我开始认为亚马逊没有添加第二个签名,不知道我从哪里得到这个想法。(也许我是从这里得到的:数字签名亚马逊应用商店)