获取Google Maps API密钥的MD5指纹调试证书时无法识别的选项-keypass

时间:2011-03-17 10:09:43

标签: android google-maps keytool

我使用linux ubuntu 10.10 .......我的android debug.keystore位于~/.android/debug.keystore位置。

我使用了http://code.google.com/android/add-ons/google-apis/mapkey.html

中解释的以下终端命令
rakib@rakib-laptop:~/.android$ \
> keytool -list \
> -alias androiddebugkey \
> -keystore "~/.android/debug.keystore" \
> -storepass android \
> -keypass android

并返回以下错误

list: unrecognized option '-keypass'
list: Try 'list -help' for more information

我不知道为什么这不能识别选项-keypass .......其他人都在使用它。

4 个答案:

答案 0 :(得分:5)

所以,感谢StackOverflow.comAndroid-Developer-googleGroup的一系列快速参与,现在解决方案很明确......让我简要介绍一下如何解决它,如果您有任何类似问题

我的android开发人员 debug.keystore 文件位于我的linux中的以下位置

~/.android/debug.keystore

然后我cd ~并按照Google Projects for Android页面中提到的步骤Obtaining a Maps API Key获取我的debug.keystore的md5指纹

rakib@rakib-laptop:~$ \
> keytool \
> -list \
> -alias androiddebugkey \
> -keystore ~/.android/debug.keystore \
> -storepass android \
> -keypass android

但它返回了一个愚蠢的令人沮丧的错误

list: unrecognized option '-keypass'
list: Try 'list -help' for more information

那是我开始所有论坛和讨论等但没找到合适的解决方案的时候。在几篇论坛帖子之后,我认为我对 keytool 的简单调用是指 一个不需要的keytool - 一个似乎来自GNU Compiler for Java的keytool。 Android需要Sun / Oracle Java的

因此,我做了以下工作,以找出我在linux系统中使用的所有不同keytool程序的实例。

rakib@rakib-laptop:~$ locate keytool

它给了我以下列表

/etc/alternatives/keytool
/etc/alternatives/keytool.1.gz
/home/rakib/java-WTK-2.5.2/bin/mekeytool
/usr/bin/gkeytool-4.4
/usr/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/jre/bin/keytool
/usr/lib/jvm/java-1.5.0-gcj-4.4/man/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/bin/keytool
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin/keytool
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/jre/man/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/man/ja/man1/keytool.1.gz
/usr/lib/jvm/java-6-sun-1.6.0.24/man/man1/keytool.1.gz
/usr/share/man/man1/gkeytool-4.4.1.gz
/usr/share/man/man1/keytool.1.gz
/var/lib/dpkg/alternatives/keytool

宾果!!!已找到如此多的keytool实例。现在我需要在Java-6-sun JRE中使用它。 所以, cd 到上面的 locate keytool 命令找到的目录

rakib@rakib-laptop:~$ cd /usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin/

现在终端位于 java-6-sun / jre / bin 目录中,我输入以下命令 - 记住我的debug.keystore文件在〜/ .android / debug.keystore

rakib@rakib-laptop:/usr/lib/jvm/java-6-sun-1.6.0.24/jre/bin$ \
> ./keytool \
> -list -alias androiddebugkey \
> -keystore ~/.android/debug.keystore \
> -storepass android \
> -keypass android

并且瞧.....这返回了我正在寻找的我的android调试证书的MD5指纹。

androiddebugkey, Mar 19, 2011, PrivateKeyEntry, 
Certificate fingerprint (MD5): 08:A6:77:9C:97:66:CA:00:B9:6B:82:6B:37:64:B8:14

请注意,当我从java-6-sun / jre / bin文件夹中键入keytool命令时,不能写JUST“keytool”。你必须写一个“./keytool” - 用句号和斜线表示你指的是终端所在的当前目录里面的keytool。

rakib@rakib-laptop:~$ WooooooHooooooooooooooo!!!!!

PostNote: 这个执行错误的keytool的问题正在发生,因为我的java-6-sun JRE不是默认的java环境我的ubuntu。而我的GNU java编译器被设置为默认的java环境。要更改linux机器中的默认Java环境,请参阅Ubuntu Community Help for Java

答案 1 :(得分:2)

您的keytool似乎来自GNU Compiler for Java。 Android需要Sun / Oracle Java,但OpenJDK也可能适合您。尝试使用受支持的Java环境中的keytool

答案 2 :(得分:0)

试试这个:

keytool -list -alias androiddebugkey -keystore .android/debug.keystore

如果未配置pwd,则表示尚未插入。

我希望这会对你有所帮助。

答案 3 :(得分:0)

你们都错过了这是一个文档错误的事实。

Keytool的-list命令不接受 -keypass参数。它不是必需的,因为-list不会以任何方式访问私钥。

如果你没有参数调用'keytool',它会告诉你:

-list [-v | -rfc] [-protected]              [-alias]              [-keystore] [-storepass]              [-storetype] [-providername]              [-providerclass [-providerarg]] ...              [-providerpath]

注意:没有-keypass

这是一个文档错误:http://code.google.com/android/add-ons/google-apis/mapkey.html

当您切换到使用Sun / Oracle的keytool时,它的工作原理是该版本在这种情况下不会发出错误信号。但正如您在上面所看到的那样 - 它也特别不使用它。

公钥加密基于标准。只要任何工具都可以访问Java的非标准密钥库格式(或者如果您使用标准的密钥库格式),您应该能够将该工具用于涉及实际签名的任何任务,以及任何可以哄骗工具的MD5指纹告诉你应该是等同的。

不要提供虚假论据,你应该对你最终得到的任何关键工具都没问题。

编辑:请注意,它接受-storepass参数。如果您已加密整个密钥库,并且您没有提供加密密码,那么它将无法理解您的密钥库,您将收到错误。您可以使用-storepass password 提供它,也可以在出现提示时在命令行上提供它。只需在设置密码时输入Enter,当然不会有效。

相比之下,-keypass提供私钥的密码。它仅用于实际访问私钥的命令,例如用于签名。