Far*_*qui 28 command-line android keytool google-play
我使用AppSignatureHelper
该类生成了11个字符哈希.但是在将apk上传到Play商店后,他们的哈希不再起作用了.我发现Play用另一个替换了密钥,这也是哈希变化的原因.现在我无法获得11个字符的哈希密钥.
我不知道如何使用Google提供的命令.我从这里找到了这个命令
keytool -exportcert -alias MyAndroidKey -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
因为,我的应用程序启用了Play App签名,我将不得不使用此命令,
keytool -exportcert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
我keytool
从JDK的bin文件夹中替换了它的路径,但后来它说不xxd
被识别所以我从网站上下载它现在说它tr
不被识别,我想它也会说cut
也是如此.
请原谅我,如果它似乎太过于问我了,但我怎么解决这个问题呢?
更新:我在linux机器上尝试了上面的第二个命令,该命令工作并给了我11个字符哈希,但仍然没有SMS Retriever工作.
解决方案:在Nick Fortescue的回答的帮助下,我下载了DER格式的文件.然后使用以下命令将其转换为.jks文件,
keytool -importcert -alias myalias -file deployment_cert.der -keystore certificate.jks -storepass mypassword
然后在certificate.jks上执行了上面的第一个命令,它工作了!
Man*_*ddy 15
这是完整的分步指南。
这会给你deployment_cert.der
文件
deployment_cert.der
文件转换为.jks
文件使用以下命令
keytool -importcert -alias YOUR_ALIAS -file deployment_cert.der -keystore certificate.jks -storepass YOUR_PASSWORD
Run Code Online (Sandbox Code Playgroud)
将您的密钥库中使用的YOUR_ALIAS,YOUR_PASSWORD替换为您的密钥。deployment_cert.der
如果需要,请使用完整的路径代替
输入此命令后,它将询问
信任此证书吗?[否]:是
输入yes并单击enter。它将显示消息
证书已添加到密钥库
这将生成一个新文件 certificate.jks
现在在终端输入命令
keytool -exportcert -alias YOUR_ALIAS -keystore certificate.jks | xxd -p | tr -d "[:space:]" | echo -n YOUR_PACKAGE `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
将您的YOUR_ALIAS,YOUR_PACKAGE替换为用于keystore,project的您的。certificate.jks
如果需要,请使用完整的路径代替
它将要求输入密码
输入密钥库密码:mypassword
输入密码,您将获得哈希。
如果您使用的是MacOS,则可以通过安装coreutils来安装sha256sum,如下所示:
brew install coreutils
或者您可以使用shasum -a 256
而不是sha256sum
这样:
keytool -exportcert -alias YOUR_ALIAS -keystore certificate.jks | xxd -p | tr -d "[:space:]" | echo -n YOUR_PACKAGE `cat` | shasum -a 256 | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
学分阿比纳夫·古普塔和这个问题的运算法尔汉Farooqui以上从答案尼克福蒂斯丘
由于默认的 bash 命令对我不起作用,我需要为本地密钥库和 Google Play 证书生成哈希,我为此编写了自己的 Ruby 脚本:https : //github.com/michalbrz/sms-retriever-hash-generator /blob/master/google_play_sign.rb
然后使用 Google Play 签名生成哈希就是:
ruby google_play_sign.rb --package com.your.app --google-play-key deployment_key.der
Run Code Online (Sandbox Code Playgroud)
哪里deployment_key.der
是从 Google Play 下载的证书,如Nick's response。
在幕后,它将 Google Play 证书转换为密钥库,并且基本上执行其他建议的 bash 命令所做的工作,但将其包装为更易于使用的内容。
在Google Play App Signing的帮助文档中,它有一个"新应用"部分.本节的第4步是:
第4步:向API提供商注册您的应用程序签名密钥如果您的应用程序使用任何API,您通常需要注册Google密钥的证书,以便为您的应用程序进行身份验证.这通常通过证书的指纹来完成.
要查找Google用于重新签名APK以进行投放的密钥证书:
- 登录您的Play控制台.
- 选择一个应用程序
- 在左侧菜单中,单击版本管理>应用程序签名.
- 在此页面中,您可以复制应用程序签名证书的最常见指纹(MD5,SHA-1和SHA-256).如果API提供程序需要不同类型的指纹,您还可以下载DER格式的原始证书,并通过API提供程序所需的转换工具运行它.
以DER格式下载原始证书,然后在该证书上使用您的命令.
这些步骤在 Mac 上对我有用:
\n上传构建(不需要功能)并至少发布到内部测试轨道。
\n转到下载文件夹并运行以下命令:
\ncd ~/Downloads\n
Run Code Online (Sandbox Code Playgroud)\n\xe2\x9e\x9c keytool -importcert -alias my-upload-key-alias -file deployment_cert.der -keystore certificate.jks -storepass notARealPassword\n\n...\n\nTrust this certificate? [no]: yes\nCertificate was added to keystore\n
Run Code Online (Sandbox Code Playgroud)\n\xe2\x9e\x9c keytool -exportcert -alias my-upload-key-alias -keystore certificate.jks | xxd -p | tr -d "[:space:]" | xargs echo -n com.myapp | shasum -a 256 | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11\nEnter keystore password: notARealPassword\n6bAhwera2r5\n
Run Code Online (Sandbox Code Playgroud)\n6bAhwera2r5
是您的 11 个字符的哈希密钥,可用于 SMS 检索器功能。
<#> Dear customer, {#var#} is your one time password for AppName account verification. 6bAhwera2r5\n
Run Code Online (Sandbox Code Playgroud)\n该模板符合印度 DLT 规则。
\n