【问题标题】:JDK 7 changes keytool outputJDK 7 更改了 keytool 输出
【发布时间】:2011-01-14 10:57:36
【问题描述】:

我正在使用 JDK 的 keytool 来生成 Google Maps API 密钥指纹。在多次被拒绝的过程中,我意识到我最近将 JDK 升级到了 1.7。所以我将我的目录切换到 JDK6(感谢上帝,旧版本仍然存在。),并重复相同的命令:

D:\.android>"C:\Program Files\Java\jre6\bin\keytool" -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

然后砰!有用。原来是JDK7生成了SHA1指纹而不是MD5,导致我提交给谷歌被拒绝了。 所以我想知道为什么新版本的JDK会发生这种情况。谁有线索?

【问题讨论】:

  • Android 不支持 JDK 1.7 或 JDK7。

标签: android google-maps java keytool


【解决方案1】:

keytool 命令具有参数-keyalg,它采用算法名称并根据该算法生成密钥。据我了解,这只是意味着该命令的默认算法已更改。

我不知道这是一个有意识的选择还是一个错误 - 您可能想向 Oracle 报告。

【讨论】:

  • 好,这听起来很合理。谢谢你的回答:)
【解决方案2】:

keytool.exe -v 为您提供不同的指纹,如MD5等。

示例: C:[jedk 路径]\bin\keytool.exe" -v -list -keystore "C:\Document s 和 Settings\Administrator.android\debug.keystore"

【讨论】:

    【解决方案3】:

    -digestalg SHA1 -sigalg MD5withRSA 与 jarsigner 一起使用。

    【讨论】:

      【解决方案4】:

      详细说明接受的答案:

      使用 JDK 1.7 我遇到了授权失败问题。我终于弄清楚了如何使用 SHA1 生成正确的调试密钥库。这是我使用的命令:

      keytool -genkey -v -keyalg RSA -sigalg SHA1withRSA -keystore "%USERPROFILE%\.android\debug.keystore" -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"
      

      生成后可以通过命令查看:

      keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
      

      签名算法现在应该是“SHA1withRSA”。复制 SHA1 指纹并将其粘贴到 Google 控制台“Android 应用程序密钥”中,您应该可以开始使用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-03
        • 2015-08-20
        • 2014-02-02
        • 2023-03-22
        • 2014-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多