42

我正在导出应用程序,我对密钥库和密钥别名非常好奇。我不确定它们的用途是什么,或者我应该创建多少个(也许每个应用程序一个?)。我将不胜感激有关这些密钥的任何信息。谢谢

4

1 回答 1

45

它基本上是一种通过您的应用程序来识别自己的方式。有调试密钥和签名密钥,后者需要您将 APK 上传到 Play 商店并发布您的应用程序。密钥别名只是一个普通的名称,它指向特定的证书。您可以为每个版本创建一个,或者只为所有应用程序使用同一个。我建议为每个应用程序创建一个,并确保备份多个副本。我喜欢保留 3 个,一个在我的系统上,一个在我的 Dropbox 中,另一个在外部某个地方。如果您丢失了该密钥库文件,则绝对无法找回它,或发布应用程序的未来版本。这个问题很有用

编辑:开发者网站的“应用程序签名”部分实际上建议在所有应用程序中使用相同的证书

一般来说,向所有开发人员推荐的策略是在应用程序的整个预期生命周期内使用相同的证书对所有应用程序进行签名。您应该这样做有几个原因...

应用程序升级 - 当您发布应用程序更新时,如果您希望用户能够无缝升级到新版本,则必须继续使用相同的证书或一组证书对更新进行签名。当系统安装应用程序更新时,它会将新版本中的证书与现有版本中的证书进行比较。如果证书完全匹配,包括证书数据和顺序,则系统允许更新。如果您在不使用匹配证书的情况下签署新版本,您还必须为应用程序分配不同的包名称——在这种情况下,用户将新版本安装为全新的应用程序。

应用程序模块化——Android 系统允许由相同证书签名的应用程序在同一进程中运行,如果应用程序请求,则系统将它们视为单个应用程序。通过这种方式,您可以将应用程序部署在模块中,并且用户可以根据需要独立更新每个模块。通过权限共享代码/数据——Android 系统提供基于签名的权限实施,以便应用程序可以向使用指定证书签名的另一个应用程序公开功能。通过使用相同的证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据。

于 2013-07-15T21:16:33.907 回答