问题描述
|
所以这是我的问题。
当我运行keytool来获取哈希键时,它将给我;
openssl不是有效的命令,程序等。
我已经安装了openssl,路径为:C:\\ Program Files(x86)\\ GnuWin32 \\ bin \\ openssl
错了吗
我应该如何编写命令行?
我尝试这样写:
keytool -exportcert -alias androiddebugkey -keystore〜/ .android / debug.keystore
| openssl sha1 -binary
| openssl base64
不起作用,所以我尝试这样:
keytool -exportcert-别名androiddebugkey -keystore c:\\ Users \\ Richie.android \\ debug.keystore
| openssl sha1 -binary
| openssl base64
不起作用...
我应该指定openssl的路径还是应该怎么做?
我也曾在Cygwin中尝试过它,但我什至没有键盘工具可以在那儿操作,因为我不知道如何转到正确的文件夹(程序文件(x86)\\ Java \\ jre6 \\ bin)
有任何想法吗?我在这里死。
解决方法
嗨,Richie,您必须输入位于密钥库和openssl文件夹中的路径,这是我这样做的方式...
我已经在::中安装了OpenSSL:
C:\\ openssl
我的密钥库的路径和名称是::
C:\\ android \\ gruporeforma.keystore
这就是我在命令行中写的::
keytool -exportcert-别名
gruporeforma-密钥库
\“ C:\\ android \\ gruporeforma.keystore \” |
c:\\ openssl \\ bin \\ openssl sha1 -binary |
c:\\ openssl \\ bin \\ openssl enc -a -e
, 是的,您需要指定openssl和keytool的路径,除非它们已经在PATH中。第一条命令应在Cygwin中按键入的方式工作,如果不行,则需要安装正确的软件包。或仅继续使用Windows,指定每个可执行文件的完整路径。
, 最好使用这段代码
try {
PackageInfo info = getPackageManager().getPackageInfo(\"your.package\",PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance(\"SHA\");
md.update(signature.toByteArray());
Log.d(\"YOURHASH KEY:\",Base64.encodeToString(md.digest(),Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}