我的apk在调试模式下工作正常。但是当我用发布模式签署apk时,自动sms retrivr无效。
然后我搜索我发现我必须在官方文档https://developers.google.com/identity/sms-retriever/verify#generating_a_one-time_code上生成一个哈希键
我找到了两个方法1>通过签名帮助类 - 我使用但不工作2>秒通过以下命令
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 |切-c1-11
但我找不到xxd命令
然后我在堆栈上搜索然后我在git bash命令运行上运行命令,但该哈希键仍然无效
通过此代码生成哈希会更容易。
只需拨打以下电话并打印您的签名即可。
ArrayList<String> sigList = (new AppSignatureHelper(this)).getAppSignatures()
更新:
调试和发布版本的哈希代码将有所不同。确保使用具有所需格式的otp消息的特定于发布的应用程序哈希代码。
AppSignatureHelper将提供使用apk签名的哈希码。构建版本apk并在日志中打印哈希代码以获取特定于版本的哈希代码。
更新:
通过命令生成的另一种方法:https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string
但是,如果您正在使用Windows,它可能无法正常工作,因为它没有像xxd或tr那样的二进制(命令)。在这种情况下,你必须从其他地方下载这些exe。
如果您正在使用git,那么您可以在“C:\ Program Files \ Git \ usr \ bin \”中找到它们,在这种情况下,请按照以下步骤操作。
keytool -exportcert -alias MY_ANDROID_KEY -keystore MY_PRODUCTION_KEY | xxd -p | tr -d "[:space:]" | echo -n MY_PACKAGE_NAME
cat| sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
在哪里指挥
在这里,如果您遇到像tr: write error: Illegal seek
这样的错误,您可以将cammand调用为tr - >
keytool -exportcert -alias MY_ANDROID_KEY -keystore MY_PRODUCTION_KEY | xxd -p | tr -d "[:space:]"
在这种情况下,您将获得大约1800多个字符长的签名字符串。将包和签名字符串传递给AppSignatureHelper的哈希方法,它将返回您的密钥。
(在这里,如果最后你使用AppSignatureHelper
,我建议只采用第一种方法)