我正在使用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会发生这种情况。任何人都有一些线索?
答案 0 :(得分:2)
keytool
命令具有参数-keyalg
,该参数采用算法名称并根据该算法生成密钥。据我了解,这只是意味着该命令的默认算法已经改变。
我不知道这是一个有意识的选择还是一个错误 - 你可能想把它报告给Oracle。
答案 1 :(得分:1)
keytool.exe -v为您提供不同的指纹,例如MD5等。
为例: C:[jedk path] \ bin \ keytool.exe“-v -list -keystore”C:\ Document s和Settings \ Administrator.android \ debug.keystore“
答案 2 :(得分:0)
将-digestalg SHA1 -sigalg MD5withRSA
与jarsigner一起使用。
答案 3 :(得分:0)
详细说明接受的答案:
使用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应用程序密钥”中,您应该很高兴。