15

第一个问题

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

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

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

现在,如果您已使用相同的密钥签署了所有应用程序,则您无法在不损害所有其他应用程序的情况下向该应用程序的新所有者提供您的密钥,或者在新的包/证书下重新发布它们以及所有随之而来的问题。如果您使用自己的密钥为所有不相关的应用程序签名,您可以发送此应用程序的一键无后顾之忧。

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


第二个问题

作为第二个问题,如果我的上述想法是正确的,您是否可以使用相同的密钥库,并且为您的不同应用程序的所有密钥设置不同的别名?据我了解,别名是实际的密钥对,但您能否将它们从密钥库中“拉出”以将它们发送给新的开发人员,就像上面概述的情况一样?还是应该为每个应用程序使用新的密钥库?

非常感谢!

4

1 回答 1

14

除了 Google 的建议之外,许多人认为您应该使用自己的密钥为每个应用程序签名。在非常真实的意义上,应用程序密钥的所有权(即知识)本质上是该应用程序和具有该密钥的任何其他应用程序的所有权。没有任何机制可以更改应用程序的密钥。

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

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

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

keytool -help

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

keytool -help -delete
于 2014-04-04T03:57:08.277 回答