Android 我可以使用相同的密钥库文件对两个不同的应用程序进行签名吗?

Android 我可以使用相同的密钥库文件对两个不同的应用程序进行签名吗?,android,android-keystore,Android,Android Keystore,我必须上传一个新的应用程序,只是设计有点不同。昨天我生成了密钥库文件来签署应用程序。我可以使用相同的吗?您可以对任意数量的应用程序使用该密钥库 无需生成新密钥库。当然!您可以根据需要多次使用同一密钥库文件。对于您开发的所有应用程序,最好使用相同的密钥库文件。如果您想更新或修改应用程序,这将很有帮助。此时,您需要使用相同的密钥签署您的申请。官方文档告诉我们: 一般来说,建议所有开发人员的策略是在应用程序的预期生命周期内使用相同的证书对所有应用程序进行签名。你这么做有几个原因 所以,是的,试着用相

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

您可以对任意数量的应用程序使用该
密钥库


无需生成新密钥库。

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

官方文档告诉我们:

一般来说,建议所有开发人员的策略是在应用程序的预期生命周期内使用相同的证书对所有应用程序进行签名。你这么做有几个原因


所以,是的,试着用相同的证书签署所有的申请。

我将对目前达成共识的答案进行反驳

我同意,对于大多数应用程序作者来说,在大多数情况下,在应用程序之间共享相同的密钥库/证书/密码都可以。关键是要使用“”,这样应用程序才能自我升级

但我可以想出一个很好的理由,为不同的应用程序或应用程序系列设置不同的密钥库。如果您认为您可能想将某个应用程序卖给其他人,让他们作为原始应用程序的升级发布,那么您必须与他们共享您唯一的密钥库和密码。可能不是一个大问题,但对你来说有点担心,也许是一个足够大的买家的尽职调查问题

另外,我真的不像@ol_v_er那样阅读文档中的同一行。我认为当前的路线是:

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


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

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

密钥库只是一种安全存储用于签署Android APK的公钥/私钥对的方法。因此,可以使用相同的密钥库对多个APK进行签名,而不会出现问题。您还可以使用相同的别名(每个别名都是一个证书)对多个APK进行签名,这样就可以了。然而,它有安全隐患。如果您的单个别名被泄露,那么您的所有应用程序都将被泄露

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

非常清楚地说,密钥存储库就是密钥的存储介质。它在签署apk的过程中不起实际作用,只用于存储实际用于签署apk的密钥

参考资料:


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

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

来自android文档

android:sharedUserId

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


最新更新

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

您上载了一个使用密钥签名的APK或Android应用程序包 它还用于对交付给用户的APK进行签名。因为 您已通过Google Play注册应用程序签名,您应该签署您的 APK或Android应用程序捆绑包,在您上载之前使用新密钥


是的,您可以(您在询问之前是否尝试过?)对于“Alias”,我应该写什么?密钥库包含组成签名证书的公钥/私钥对。一个密钥库可以包含多个密钥对。“别名”是对密钥库中特定密钥对的引用。一个密钥库可以保存所有密钥对,但每个应用程序都应该有一个密钥对。使用您正在签名的应用程序的名称作为别名。您可以为密钥库和其中的每个密钥对设置单独的密码。您可以更改这些密码,从密钥库导入/导出密钥对,或者向密钥库添加新的密钥对。这都是通过命令行“keytool”命令完成的。查找它。@brycewjohnson是否可以通过GUI向密钥库添加新的密钥对?对于“Alias”,我应该写些什么?为了简单起见,在所有应用程序中也使用相同的密钥对。我现在的问题是,在不同的应用程序中使用不同的密钥库和证书是否有任何问题请不要对多个问题给出相同的答案。发布一个好的答案,然后投票/标记以重复结束其他问题。如果问题不是重复的,那么定制你的答案