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

时间:2011-10-07 09:36:29

标签: android android-keystore

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

7 个答案:

答案 0 :(得分:73)

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

无需生成新的密钥库。

答案 1 :(得分:36)

官方文件告诉我们:

  

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

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

是的,尝试使用相同的证书对所有应用程序进行签名。

答案 2 :(得分:35)

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

我同意大多数时候对于大多数应用程序作者来说,在您的应用程序之间共享相同的密钥库/证书/密码可以正常工作。关键是要使用" the same certificate throughout the expected lifespan of your applications"所以应用程序可以自我升级。

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

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

  

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

(注意当前版本中没有逗号)只是强调了“生命周期”。推荐适用于所有应用,而不是实际指示您为所有应用使用相同的证书。

答案 3 :(得分:15)

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

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

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

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

参考文献:

Understanding keystore, certificates and alias

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

答案 4 :(得分:4)

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

答案 5 :(得分:1)

我使用相同的证书(密钥库)对我的所有应用进行签名。如果我改变主意并希望我的应用程序共享其数据,这将带来优势。

您可能知道Android会使用UID标识每个应用。如果您的所有应用程序都使用相同的证书进行签名,则可以请求android为多个应用程序分配相同的用户ID,并使其在单个进程中运行并共享数据。

来自android doc android:sharedUserId

  

机器人:sharedUserId

     

将与其他应用程序共享的Linux用户标识的名称。默认情况下,Android会为每个应用程序分配自己唯一的用户ID。但是,如果将此属性设置为两个或多个应用程序的相同值,则它们将共享相同的ID - 前提是它们也由相同的证书签名。具有相同用户ID的应用程序可以访问彼此的数据,并且如果需要,可以在同一进程中运行

答案 6 :(得分:1)

最近更新

如果您要注册通过Google进行应用签名,则必须使用新的其他密钥来签名apk或捆绑包,否则在上传Google控制台后会提示您错误消息

您上传了用密钥签名的APK或Android应用程序捆绑包 也用于对交付给用户的APK进行签名。因为 您已注册Google Play的应用签名,则应签名 带有新密钥的APK或Android应用捆绑包