【问题标题】:Possible Benefit to Signing Different Android Apps With Different Keystore/Alias使用不同的密钥库/别名为不同的 Android 应用程序签名的可能好处
【发布时间】:2013-07-14 06:16:05
【问题描述】:

第一个问题

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

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

在这种情况下(例如,如果您出售了自己的应用,就可能出现这种情况),您需要提供用于签署您的应用的密钥,以便新所有者更新 Play 商店并对其进行的任何改进。

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

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


第二个问题

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

非常感谢!

【问题讨论】:

  • 请注意,“第一个问题”不包含问题。
  • 对不起,我认为隐含的问题很清楚。 “是这样吗?”

标签: android code-signing android-keystore


【解决方案1】:

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

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

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

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

keytool -help

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

keytool -help -delete

【讨论】:

  • 作为不熟悉 Android 开发的人,我发现这个答案很有帮助。谢谢!这可能很明显,但为了完全确定,我想问一下是否存在这样一种情况,即免费应用程序和同一应用程序的专业(付费)版本被认为与您想要的位置无关为每个应用程序使用单独的键,即使它们本质上是同一个应用程序。我的猜测是,在这种情况下,您总是希望对两个应用程序使用相同的密钥。我希望得到一位经验丰富的 Android 开发人员的确认,听起来您很有经验。
  • 为了签署密钥的目的,我认为任何不需要共享数据的应用程序都是不相关的。但是,如果您希望免费和付费应用能够相互共享数据,那么您会希望它们拥有相同的密钥。
  • 谢谢,斯科特。很好,详细的答案:)
猜你喜欢
  • 2020-04-30
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 2012-05-30
  • 1970-01-01
相关资源
最近更新 更多