我可以使用相同的密钥库文件来签署两个不同的应用程序吗?

Ral*_*aci 73 android android-keystore

我必须上传一个新的应用程序,它只是设计有点不同.昨天我生成了密钥库文件来签署应用程序.我可以使用相同的吗?

Chi*_*rag 79

您可以将它keystore用于任意数量的应用程序.

无需生成新的密钥库.

  • 而对于'Alias',我该怎么写? (6认同)
  • 密钥库*包含组成签名证书的公共/私人密钥对.一个密钥库可以包含许多密钥对."别名"是对密钥库中特定密钥对的引用.一个密钥库可以容纳所有密钥对,但每个应用程序应该有一个密钥对.使用您要签名的应用程序的名称作为别名.您可以为密钥库和其中的每个密钥对分别使用密码.您可以更改这些密码并从密钥库导入/导出密钥对,或将新密钥对添加到密钥库.这都是使用命令行'keytool'命令完成的.仔细看看. (6认同)

ol_*_*_er 39

官方文件告诉我们:

通常,所有开发人员的建议策略是在应用程序的预期生命周期内使用相同的证书对所有应用程序进行签名.你应该这样做有几个原因......

https://developer.android.com/studio/publish/app-signing.html#considerations

所以,是的,尝试使用相同的证书签署所有应用程序.

  • 而对于'Alias',我该怎么写? (8认同)
  • 为简单起见,也请对所有应用使用相同的内容. (6认同)

Ann*_*unn 37

到目前为止,我将对共识答案提出反驳.

我同意,对于大多数应用程序作者来说,在您的应用程序之间共享相同的密钥库/证书/密码将正常工作.关键是在应用程序的整个预期生命周期内使用" 相同的证书 ",以便应用程序可以自行升级.

但我可以想到一个非常好的理由,可以为单独的应用程序或应用程序系列提供单独的密钥库.如果您认为自己可能想要将应用程序出售给其他人,以便将其作为原始版本的升级版本发布,那么您必须与他们共享您的唯一密钥库和密码才能这样做.也许不是一个巨大的问题,但有点担心你,或许,尽职调查问题的一个大买家足够.

另外,我真的不像@ol_v_er那样在文档中读取相同的行.我认为目前的路线:

您应该在应用程序的预期生命周期内使用相同的证书对所有应用程序进行签名.

(注意当前版本中没有逗号)只是强调"终身"建议适用于所有应用程序,而不是实际指示您对所有应用程序使用相同的证书.

  • 为每个应用程序保留单独的密钥库应该是要走的路! (6认同)

Ant*_*ers 15

我想在这里补充一些说明,因为这个问题和提供的答案会让我感到困惑.了解密钥库实际上是什么至关重要.

密钥库只是一种安全存储公钥/私钥对的方法,用于签署您的Android apks.所以,是的,你可以使用相同的密钥库来签署多个apks,没有问题.您还可以使用相同的别名(每个别名是证书)来签署多个apks,它将起作用.然而,它具有安全隐患.如果您的单个别名遭到入侵,那么您的所有应用都将遭到入侵.

但是,如果您打算有一天将权利出售给您的应用,那么对所有应用使用相同的别名可能不是一个好主意.但是,如果您为每个apk使用不同的别名,则使用相同的密钥库,可能不一定是一个糟糕的选择.我确信有一种方法可以将证书从一个密钥库移动到另一个密钥库,这样您就可以安全地只为该证书提供必要的密钥给买方.

为了说清楚,密钥库就是密钥的存储介质.它在签署apk的过程中不起任何实际作用,但仅用于存储实际用于签署apk的密钥.

参考文献:

了解密钥库,证书和别名

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


小智 5

当然!您可以根据需要多次使用相同的密钥库文件。为您开发的所有应用程序使用相同的密钥库文件总是更好。如果您想更新或修改应用程序,这将有所帮助。那时您需要使用相同的密钥对您的应用程序进行签名。


小智 5

最近更新

如果您想注册谷歌应用程序签名,您必须使用新的不同密钥来签署您的 apk 或捆绑包,否则上传谷歌控制台后会给您错误消息:

您上传了使用密钥签名的 APK 或 Android App Bundle,该密钥也用于对交付给用户的 APK 进行签名。由于您已注册 Google Play 的 App Signing,因此您应在上传之前使用新密钥对您的 APK 或 Android App Bundle 进行签名