使用不同的密钥库/别名签署不同的Android应用程序可能带来的好处

时间:2013-07-14 06:16:06

标签: android code-signing android-keystore

第一个问题

我了解使用相同的密钥签署所有Android应用程序的好处 - 数据共享等 - 以及Google推荐的这一事实。

我的想法是,使用不同的密钥签署每个应用程序(至少每个与其他应用程序无关且不太可能需要共享数据的应用程序)可能有一个重要原因。这是因为如果您最终希望或需要将代码交给其他开发人员或公司以便将来更新。

在这种情况下 - 例如,如果您销售应用程序可能会出现这种情况 - 您需要提供您的应用程序签名的密钥,以便新所有者通过他们所做的任何改进来更新Play商店。

现在,如果您使用相同的密钥对所有应用程序进行了签名,则无法在不影响所有其他应用程序的情况下为这一个应用程序的新所有者提供密钥,或者在新软件包/证书下重新发布这些应用程序以及随之而来的所有问题。如果您使用自己的密钥签署所有不相关的应用程序,您可以发送此应用程序的一个密钥,无需担心。

所以问题是 - 这是这样的吗?还是我误解了一些基本的东西?


第二个问题

作为第二个问题,如果我的上述想法是正确的,您是否可以使用相同的密钥库,并为您的不同应用程序的所有密钥设置不同的别名?根据我的理解,别名是实际的密钥对,但是你可以将它们“拉出”密钥库以将它们发送给新的开发人员,如上面概述的那样吗?或者是否有人计划为此应急计划使用每个应用程序的新密钥库?

非常感谢!

1 个答案:

答案 0 :(得分:13)

除了谷歌的推荐,许多人认为你应该用自己的密钥签署每个应用程序。在非常真实的意义上,应用程序密钥的所有权(即知识)本质上是该应用程序和具有该密钥的任何其他应用程序的所有权。没有任何机制可以更改应用程序的密钥。

使用相同密钥签署不相关的应用程序的另一个潜在问题是公司是否/何时增长。谨慎的做法是尽量减少单个心怀不满的员工/合作伙伴可能对您的业务造成的损害。一个偏执的人甚至可能对使用生产密钥签署应用程序负全部责任。

如果我理解你的第二个问题的前提,那么你是正确的。密钥库只是密钥的集合,而别名只是识别每个密钥的简便方法。您可以制作密钥库文件的副本,并有选择地删除一些别名(密钥)。

使用此命令查看可与keytool命令一起使用的命令:

keytool -help

使用以下命令查看可与delete命令一起使用的选项。不言而喻,在修改密钥库之前进行备份:

keytool -help -delete