【问题标题】:Sign old Android apps with upload key使用上传密钥为旧的 Android 应用程序签名
【发布时间】:2018-09-05 13:15:25
【问题描述】:

我的 Google 开发者帐户现在包含 5 个不同的应用程序,其中 4 个是在新的 Google App Signing 发布之前创建的,并且它们都共享相同的证书。当我创建最后一个应用程序时,我按照步骤创建了一个新密钥,现在该密钥与其他应用程序“分开”工作,具有自己的发布密钥。

我想知道是否可以使用最近创建的 release-key.jks 来为其余应用程序签署最后一个应用程序。

如果可以的话,我应该选择 Google Play 控制台的应用签名页面提供的三个选项中的哪一个来上传?

  1. “您已导出应用签名密钥”
  2. “您尚未导出应用签名密钥”
  3. “您没有将应用签名密钥存储在 Java 密钥库中”

我有点迷路了,我不想因为以后不能发布更多更新而搞砸了。

先谢谢了!

【问题讨论】:

    标签: android google-play android-signing


    【解决方案1】:

    您应该使用第一次签名时使用的相同密钥 根据https://developer.android.com/studio/publish/app-signing#considerations

    您应该使用相同的证书对所有 APK 进行签名 您的应用程序的预期寿命。你有几个原因 应该这样做:

    应用升级:当系统正在安装一个应用的更新时,它 将新版本中的证书与新版本中的证书进行比较 现有版本。系统允许更新,如果证书 匹配。如果您使用不同的证书签署新版本,您 必须为应用分配不同的包名——在这种情况下,用户 将新版本安装为全新的应用程序。应用程序模块化: Android 允许使用相同证书签名的 APK 在相同的环境中运行 进程,如果应用程序请求,以便系统将它们视为 单个应用程序。通过这种方式,您可以在模块和用户中部署您的应用程序 可以独立更新每个模块。代码/数据共享 通过权限:Android提供基于签名的权限 强制执行,以便应用程序可以向另一个应用程序公开功能 使用指定的证书签名。通过签署多个 APK 具有相同的证书并使用基于签名的权限 检查,您的应用程序可以以安全的方式共享代码和数据。如果你 计划支持应用程序升级,请确保您的应用程序签名密钥 有效期超过该应用程序的预期寿命。 建议有效期为 25 年或更长。当你的钥匙 有效期届满,用户将无法再无缝 升级到您的应用的新版本。

    如果您计划在 Google Play 上发布您的应用程序,您使用的密钥 签署这些 APK 的有效期必须在 10 月 22 日之后结束 2033. Google Play 强制执行此要求,以确保用户可以在新版本可用时无缝升级应用程序。如果你使用 Google Play 应用签名,Google 确保您的应用已正确签名 并且能够在其整个生命周期内接收更新。

    【讨论】:

    • 我只能访问我用来签署所有应用程序的 .p12 证书(它们是在 2012 年创建的,似乎找不到 release.keystore 文件),我也根据这篇博文 (tonylukasavage.com/blog/2011/03/14/…) 确实可以提取用于生成特定证书的密钥库。如果我然后选择第二个选项(“您尚未导出您的应用签名密钥”),下载PEPK工具并使用命令创建加密的私钥路径并上传生成的私钥是否正确?
    • 您的 p12 可以使用以下命令进行转换:keytool -importkeystore -srckeystore savagelook.p12 -destkeystore savagelook.keystore -srcstoretype pkcs12
    • 即使是 release.keystore 一个 1024 密钥大小的 RSA,它也应该工作吗?根据 [support.google.com/googleplay/android-developer/answer/… 不支持小于 2048 位的 RSA 密钥。
    • 那个你应该自己检查,我不确定
    • @cgstone 对此的任何解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2020-04-30
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多