1

我使用了 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

4 回答 4

5

所以,感谢StackOverflow.comAndroid-Developer-googleGroup的一系列快速参与,现在解决方案很清楚.....让我简要介绍一下我是如何解决它的,以防你们中的任何人遇到类似的问题

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

~/.android/debug.keystore

然后我cd ~按照 Google Projects for Android 页面中提到的步骤获取地图 API 密钥以获取我的 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 的 keytool

因此,我做了以下操作来找出我在我的 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 命令时,您不能只写“keytool”。您必须改为写“./keytool” - 带有句点和斜杠以暗示您指的是终端所在当前目录中的 keytool。

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

后注:执行错误 keytool 的问题之所以发生,是因为我的 java-6-sun JRE 不是我的 ubuntu 中的默认 java 环境。而是将我的 GNU java 编译器设置为默认的 java 环境。要更改 linux 机器中的默认 Java 环境,请参阅Java 的 Ubuntu 社区帮助

于 2011-03-19T14:47:44.583 回答
2

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

于 2011-03-19T13:07:29.280 回答
0

尝试这个:

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

如果未配置密码,则您还没有插入密码。

我希望这能帮到您。

于 2011-03-17T10:54:17.793 回答
0

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

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

如果您不带参数调用“keytool”,它会告诉您:

-列表 [-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 的非标准密钥库格式(或者如果您使用标准密钥库格式,例如 PKCS12),您就应该能够将该工具用于任何涉及实际签名的任务,以及您可以哄骗工具的任何 MD5 指纹表明你应该是等价的。

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

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

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

于 2011-03-21T03:31:29.240 回答