【问题标题】:Signing two apps with the same key使用相同的密钥签署两个应用程序
【发布时间】:2011-11-23 10:13:59
【问题描述】:

我构建了两个应用程序,第一个应用程序 com.pakname.pak1,第二个应用程序包名 com.pakname.pak2,然后我得到一个密钥 mykey.keystore。

如果我用相同的密钥签署这两个应用程序并将它们发布到 android 市场会发生什么?

这是一个好习惯吗?我猜不是,但我不明白使用不同密钥签署来自同一公司的应用程序的意义。

谁能解释一下这种情况

谢谢

【问题讨论】:

标签: android google-play signing


【解决方案1】:

阅读本文

签约策略

应用程序签名的某些方面可能会影响您处理应用程序开发的方式,尤其是当您计划发布多个应用程序时。

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

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

  • 应用程序模块化 – Android 系统允许由相同证书签名的应用程序在同一进程中运行(如果应用程序请求),以便系统将它们视为单个应用程序。通过这种方式,您可以将应用程序部署在模块中,并且用户可以根据需要独立更新每个模块。

  • 通过权限共享代码/数据。 Android 系统提供了基于签名的权限强制执行,因此应用程序可以将功能公开给使用指定证书签名的另一个应用程序。通过使用相同的证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据。

【讨论】:

  • 还要注意对多个应用程序使用同一个证书的缺点:如果您只想将您的一个应用程序出售给某人(源+代码+资源+证书),您将被搞砸:您将被“强迫”出售你的证书,以便新的应用程序所有者可以升级它(否则,他会失去你所有当前的用户,这应该是可悲的,因为该应用程序值得购买),所以这对你的其他人来说意味着坏事应用程序...此外,此答案中的第一项(项目符号 #1)不是关于“N 个应用程序的 1 个证书”,而只是“针对特定应用程序的所有更新的 1 个证书”。
【解决方案2】:

在市场上,真正重要的是包名称和版本控制。如果你尝试为同一个应用上传两个不同的包名,你会陷入一个充满痛苦的灰色地带:( 第二,如果您尝试上传两次相同的应用程序忘记更新版本,市场将拒绝您的上传,您必须重新构建您的应用程序更改版本。 最后,我为我的应用程序使用相同的密钥库和相同的签名没有问题:)

【讨论】:

  • 我不想上传具有不同包名的同一个应用程序,我有两个完全不同的应用程序,我想用相同的密钥对它们进行签名。如果我说得对,这种情况不会有问题。
  • 是的,我只为您提供了避免上传问题的基础知识。正如我告诉过你的,我对所有应用程序使用相同的密钥库和相同的密码。
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2013-05-09
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多