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

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

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

不需要生成新的密钥库。

官方文件告诉我们:

一般来说,为所有开发人员推荐的策略是在应用程序的预期使用期限内使用相同的证书签署所有应用程序。 有几个原因,你应该这样做…

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

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

到目前为止,我会对此达成共识。

我同意,对于大多数应用程序作者而言,在您的应用程序之间共享相同的密钥库/证书/密码将会正常工作。 关键的是在应用程序的整个预期使用期限内使用“ 相同的证书 ”,因此应用程序可以自行升级。

但是我可以考虑一个非常好的理由来为单独的应用程序或应用程序家族分别设置密钥库。 如果您认为您可能想将应用程序出售给其他人,以便将其作为升级版本发布,则必须与他们共享您的唯一密钥库和密码。 可能不是一个大问题,但是对你来说有点担心,也许对一个足够大的买家来说是一个尽职调查问题。

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

您应该在应用程序的预期使用期限内使用相同的证书签署所有应用程序。

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

我想在此补充一些说明,因为这个问题和答案给我造成混乱。 了解密钥存储实际是什么是至关重要的。

密钥库只是安全地存储公钥/私钥对的一种手段,用于签署您的Android应用。 所以是的,你可以使用相同的密钥库签署多个apks,没有问题。 你也可以使用相同的别名(每个别名是一个证书)签署多个apks,它将工作。 不过,它具有安全性。 如果您的单一别名遭到入侵,那么您的所有应用程序都将遭到入侵。

但是,如果您打算将权限出售给您的应用程序,那么对所有应用程序使用相同的别名可能不是一个好主意。 但是,使用相同的密钥库,只要您为每个apk使用不同的别名,可能不一定是不好的select。 我确信有一种方法可以将证书从一个密钥库移到另一个密钥库,以便您可以安全地将唯一证书的密钥提供给买方。

为了说清楚,密钥库就是这样一个密钥的存储介质。 它在签名apk的过程中不起任何作用,只是用来存储实际用于签名apk的密钥。

参考文献:

了解密钥库,证书和别名

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

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

我使用相同的证书(密钥库)签署所有我的应用程序。 如果我改变了主意并希望我的应用程序共享他们的数据,这将带来好处。

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

从android文档android:sharedUserId

机器人:sharedUserId

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