【问题标题】:Android Studio signs apk different than jarsignerAndroid Studio 签署的 apk 与 jarsigner 不同
【发布时间】:2015-08-06 05:26:18
【问题描述】:

在 Android Studio 中,当我转到 Build > Generate Signed APK 时,生成的 apk 签名的 SHA1 与 jarsigner 手动生成的不同。因此,Google Play 拒绝更新,我每次都必须手动签名。该应用程序的第一个版本是使用带有 ADT 插件的 Eclipse 签署的,如果这很重要的话。为什么会这样?

【问题讨论】:

  • 反对者愿意发表评论吗?

标签: android android-studio jarsigner


【解决方案1】:

为什么会这样?

因为您在 Android Studio 中选择了不同的密钥来签署这个特定的风格,而不是您在发布的版本中使用的密钥。您需要按F4(或在“app”模块上下文菜单(RMB)中选择“打开模块设置”)并检查Signing和Flavors选项卡。

或者,您没有在此处指定签名证书,并且在导出期间要求您提供一个。但是,您似乎还是选错了。

编辑

由于APK是普通的ZIP压缩包,您可以轻松提取META-INF/CERT.RSA文件并获取使用证书的详细信息

keytool -printcert EXTRACTED-CERT.RSA

或者只是

unzip -p Name-of-apk.apk META-INF/CERT.RSA | keytool -printcert

如果使用任何健全的 shell(不是 windows),然后将输出与最近的 APK 进行比较

编辑

请注意,您只能比较证书指纹。序列号、到期日期等不是唯一的。 如果哈希(指纹)不同,那么这是不同的证书,不管你喜不喜欢:)

【讨论】:

  • 感谢您的回复。我在 Mac 上,键盘快捷键是什么?而且我很肯定我使用的是同一个密钥库。
  • 我不知道,但你可以在“app”模块上打开上下文菜单并查找“Open Module Settings”
  • 好的,我打开了模块设置,但我没有为签名选择任何密钥库。这是它的样子:imgur.com/WKUzto9,b6QFXWO#0
  • 那么这意味着在导出已签名的 APK 期间要求您提供密钥,并且您在该步骤中选择了不正确的密钥
  • 这是我的问题所在。我确定我使用了正确的密钥,这就是为什么这个问题对我来说如此奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2013-09-06
  • 2013-03-16
  • 2016-02-18
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多