上周我创建了一个应用程序并通过在 Android Studio 中创建 keystore 将它的第一个版本上传到 Play 商店。我想注册 App Signing,但 Play Console 说我需要先上传应用才能注册,所以我上传了应用程序包 (app.aab) 然后注册了该计划,现在我可以看到 2 个证书 - 上传证书和应用程序签名证书。可以选择以 .der 格式下载它们。
我该怎么处理这些 .der 文件?为了发布更新,我再次转到 Generate Signed Build,它要求我提供我选择的 keystore 并输入密码,然后它生成了更新的签名应用程序包。
在整个过程中,我从未遇到过使用 .der 证书的选项,如果不需要它们,为什么它们会显示在 Play Console 中的发布管理下的应用签名中。由于 Android Studio 仍在根据我硬盘上可用的 keystore 生成签名版本,我注册的应用签名有什么意义?
官方文档 App Signing和 Managing Keys甚至没有提到这些上传证书。它提到的是使用上传 key 对您的应用程序进行签名,什么是上传 key - Play Console 没有提及它,Android Studio 也没有提及,Android Studio 需要 keystore 来生成 .jks 格式的签名版本
最佳答案
更新: Google 已更新其 documentation around App Signing by Play ,使它更容易理解,所以这个答案可能是多余的。留给后人。
tldr;大多数开发人员不需要这些 .der 文件,它们用于高级用例。
这么多的问题!好的,扣紧...
只是为了澄清基础知识以确保我们使用相同的语言:当您在 中创建 key 时 keystore ,您实际上是在创建一个 key 对 (一个 私钥 和一个 公钥 )以及一个 证书 .该证书包含我们所说的专有名称(包括您的姓名、公司名称等)和公钥。因此,该证书是所有公开信息,并且在您对其进行签名以供任何人查看时实际上已添加到您的 APK 中。私钥保留在您的 keystore 中,是使其他人无法以可通过您的证书验证的方式签署您的 APK 的 secret 。因为术语太多,而且人们通常不太熟悉底层的密码学概念,所以您经常会看到人们只是交替使用术语“ keystore ”、“ key ”和“证书”。
报名时应用签名 ,您将您的私钥发送给 Google,以便 Google 可以代表您签署 APK。目的有三:
您可以看到现在有两种 key (和关联的证书):
哦,是的,我还应该提到:有两种方法可以注册 App Signing。
对于现有应用程序,创建上传 key 是可选的 注册 App Signing 时。这适用于只对利用福利 #1 感兴趣的人。 Google 强烈建议您创建一个上传 key 并开始上传用它签名的 APK/Bundles,以避免在好处 #2 和 #3( key 丢失/泄露)中描述的灾难性场景。
正如您所注意到的,即使您创建了上传 key ,您仍然可以上传使用您的应用签名 key 签名的 APK .尽管这似乎适得其反,但 Google 这样做的主要原因是让开发人员可以切换到 Android App Bundle(需要注册 App Signing)并在测试轨道中对其进行测试,同时仍然能够将 APK 推送到他们的生产轨道使用他们的应用程序签名 key 进行签名。这让开发人员有时间测试和研究如何在他们的构建过程中完成这项工作,而不会阻碍他们当前的生产发布过程。
请注意 因为您仍然可以上传使用应用签名 key 签名的 APK 并不意味着您应该 .如果您想利用好处 #3,您需要开始上传使用上传 key 签名的 APK。
——
现在,回到这些 .der 文件......好吧,很快!
当您的 Android 应用与第三方 API(例如 Google API、Facebook API 等)通信时,您通常需要注册您的应用。这种注册通常需要两条信息:包名和 证书指纹 (例如 SHA1)。此注册可确保只有具有您的包名称并使用您的应用签名 key 签名的应用才能使用您对该 API 的配额。
所有开发人员都知道他们的包名,但很多人经常问如何获得证书的指纹。 Stackoverflow 是一个很好的地方,可以找到要运行的正确命令以从您的 keystore 中提取它,但是 Play Console 也将其显示为方便 (对于要求 Google 为他们生成应用签名 key 的开发人员来说,这也很重要,因为他们没有带有应用签名 key 的 keystore )。这就是您看到应用签名证书的 MD5、SHA1 和 SHA256 的原因。
我看到您现在问“好吧,显示应用签名证书的指纹是有意义的,但为什么还要显示上传证书的指纹?”这是一个很好的问题,谢谢你的提问。如果您在将 APK 上传到 Play 管理中心之前使用上传 key 对其进行签名,则您可能需要先测试这些工件,因此,如果您与任何第三方 API 有任何集成,则还需要注册此证书!
好的,现在,我们终于到了 .der 文件。
.der 文件是证书。 Play Console 不仅可以让您看到证书的指纹,还可以让您完整下载它们。开发人员可能需要它们的唯一原因是第三方 API 需要使用不同类型的指纹注册您的应用程序。例如,Facebook API 需要使用证书的 SHA1 二进制表示的 Base64 进行注册。您无法根据 Play 管理中心显示的指纹计算出该值,因此您必须在原始证书上手动运行一些命令。
[来源:我在 Google 工作并实现了大部分内容]
关于android - 如何使用上传证书发布应用更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320907/