我正在尝试按照 https://developers.google.com/console/help/#installed_applications 中的步骤注册我的 android 应用程序,这导致我遵循 http://developer.android.com/tools/publishing/app-signing.html。
但是,我不确定如何获取签名证书指纹 (SHA1)。
我首先使用 Eclipse ADT 插件来导出和创建密钥库/密钥。然后,我尝试执行 keytool -list keystore mykeystore.keystore
,它给了我一个 MD5 证书指纹。我是否需要重做签名(意味着我不能使用 eclipse 导出向导)?
我可以先使用调试证书吗?
https://i.stack.imgur.com/SldEv.png
我知道这个问题已经得到解答,但这就是我找到默认密钥库签名的方式。在 Eclipse 中,如果您转到 Windows -> Preferences -> Android -> Build
https://i.stack.imgur.com/kzVTx.png
我认为这将完美地工作。我用了同样的:
对于 Android 工作室:
单击构建 > 生成签名的 APK。您将收到一个消息框,只需单击确定。现在将有另一个窗口,只需复制密钥存储路径。现在打开命令提示符并转到 C:\Program Files\Java\jdk1.6.0_39\bin>(或任何已安装的 jdk 版本)。键入 keytool -list -v -keystore 然后粘贴您的密钥存储路径(例如 C:\Program Files\Java\jdk1.6.0_39\bin>keytool -list -v -keystore "E:\My Projects \Android\android工作室\签名的 apks\Hello World\HelloWorld.jks")。现在它将询问密钥存储密码,提供您的密码并按 Enter 以获取您的 SHA1 和 MD5 证书密钥。
如果您使用的是 Mac 甚至 Linux,只需将其复制并粘贴到终端应用程序中,您将立即获得 SHA1 密钥。无需更改任何内容。
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
示例输出:
Alias name: androiddebugkey
Creation date: 17 Feb 12
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4f3dfc69
Valid from: Fri Feb 17 15:06:17 SGT 2012 until: Sun Feb 09 15:06:17 SGT 2042
Certificate fingerprints:
MD5: 11:10:11:11:11:11:11:11:11:11:11:11:11:11:11:11
SHA1: 11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:01:11
Signature algorithm name: SHA1withRSA
Version: 3
在命令行中使用它
c:\Program Files\Java\jdk1.6.25\bin>keytool -list -v -keystore c:\you_key_here.key
打开终端(在 Unix 中,在 MAC 中),(Windows 中的 cmd
)和 cd
到此(您的 java)路径:
C:\Program Files\Java\jdk1.6.0_43\bin>
运行此命令:
keytool -list -v -keystore C:\Users\leon\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
只需将路径更改为 debug.keystore
,您将获得 MD5 和 SHA-1 指纹。
keytool -list -v -keystore "keyStoreName"
从应用程序的密钥库所在的目录运行此命令。
在 Android Studio 中,按照以下步骤操作:
单击 android studio IDE 右侧的 Gradle 属性菜单。展开任务树。点击signingReport你可以在底部控制台看到你的SHA1
https://i.stack.imgur.com/J8XUD.jpg
看看你是否想在那个时候使用 Google Map
,你需要 MD5
指纹来生成 api kay
以便在你的 android 应用程序中使用谷歌地图。
如果您使用 JDK 1.6
,Keytool 命令会生成 MD5
指纹,如果您使用 JDK 1.7
,它会生成 SHA1
指纹。
所以问题是,如果您想签署您的应用程序以进行发布,请阅读 this。
如果您想使用 google-map
,请阅读 this。
keytool -list -v etc
命令时得到的结果
如果您使用的是 IntelliJ(12+?),请转到菜单 Build/Generate signed Api
填写弹窗后,获取“key store path”字段中的数据(例如C:\Users\user\Documents\store\store)
并在命令行中运行:
>keytool -list -v -keystore "C:\Users\user\Documents\store\store"
....
MD5: 11:C5:09:73:50:A4:E5:71:A2:26:13:E0:7B:CD:DD:6B
--> SHA1: 07:0B:0E:E8:F7:22:59:72:6A:1C:68:05:05:CF:2E:6F:59:43:48:99
SHA256: E6:CE:DA:37:C1:18:43:C1:A3:F0:9E:8F:1A:C2:69:AF:E6:41:F7:C0:18:
1D:1D:55:5D:F0:52:6C:EE:77:84:A7
...
祝你好运
如果有人使用 Android Studio...
点击:Build > Generate Signed in APK 创建一个新密钥:这将生成“.jks”文件
使用以下命令读取数据(SHA1 和其他信息):
$ keytool -list -v -keystore 文件名.jks
$keytool -keystore filename.jks | openssl sha1 -binary | openssl base64
生成密钥哈希的命令
对于使用 OpenSSL 的用户,您可以通过以下方式检索 SHA1 指纹:
OpenSSL> dgst -sha1 my-release-key.keystore
这将导致以下输出:
https://i.stack.imgur.com/aNq1w.png
我第一次很困惑,但我建议你为 Windows 提供最终的工作解决方案:
https://i.stack.imgur.com/dB6la.jpg
2) 现在输入这个命令 keytool -list -v -keystore C:\Users\YOUR_WINDOWS_USER\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
https://i.stack.imgur.com/NdpF6.jpg
这是我的简单解决方案:
点击Gradle
按钮,您可以在右上角找到。你会看到所有的 gradle 文件。现在转到android,双击signingReport。 gradle 构建完成后,您会看到 SHA 密钥。检查下面的图像以获取分步指南。
单击 Gradle 后,请检查以下图像。希望这可以帮助某人。
步骤1:
https://i.stack.imgur.com/KTuGe.png
第2步:
https://i.stack.imgur.com/tHSJP.png
如果您使用的是 Android Studio。您可以通过 Gradle Tasks 快速获取 SHA1 证书指纹(调试、发布...所有构建类型!!):
签约报告
SHA1 显示在消息日志中
Android 插件(在 gradle 应用程序中配置)默认创建一个调试模式。
com.android.application
到密钥库的文件路径:
HOME/.android/debug.keystore
我建议将 debug.keystore 附加到 build.gradle。为此,将文件 debug.keystore 放入 app 文件夹,然后在 gradle app 中添加 SigningConfigs:
apply plugin: 'com.android.application'
android {
................
signingConfigs {
debug {
storeFile file("../app/debug.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
release {
storeFile file("../app/debug.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
........
}
额外:如果要创建发布,请将文件 release.keystore 放入应用文件夹。 (此示例使用相同的 debug.keystore)
如果您使用的是 Android Studio。您不需要使用 cmd 提示符生成 SHA1 指纹。您只需要使用 Android Studio 的默认 Maps Activity 创建一个项目。在该项目中,您可以在 Values 文件夹下的 google_maps_api.xml 中获取指纹。希望这会帮助你。 :)
https://i.stack.imgur.com/TbAPS.png
试试这个:Windows----preferences----Android--build---sh1 code copy from here
我认为这将完美地工作。我用了同样的:
对于 Android 工作室:
单击构建 > 生成签名的 APK。您将收到一个消息框,只需单击确定。
现在将有另一个窗口,只需复制密钥存储路径。
现在打开命令提示符并转到 C:\Program Files\Java\jdk1.6.0_39\bin>(或任何已安装的 jdk 版本)。
键入 keytool -list -v -keystore 然后粘贴您的密钥存储路径(例如 C:\Program Files\Java\jdk1.6.0_39\bin>keytool -list -v -keystore "E:\My Projects \Android\android工作室\签名的 apks\Hello World\HelloWorld.jks")。
现在它将询问密钥存储密码,提供您的密码并按 Enter 以获取您的 SHA1 和 MD5 证书密钥。
现在将此 SHA1 密钥添加到凭据选项卡中的谷歌开发人员控制台,并将 android studio 中的构建变体更改为发布模式。
请从菜单右侧单击 Gradle 然后单击 :app 然后单击 android 文件夹然后 SigningReport 文件名存在那里双击它。它将开始执行,过一会儿它会显示 SHA-1 代码 只需复制代码即可。并将其粘贴到您需要的地方
https://i.stack.imgur.com/h6krV.png
对于那些在 mac 上寻找 keytool 的人。按着这些次序:
首先确保安装 Java JDK http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
然后在命令提示符中输入:
/usr/libexec/java_home -v 1.7
它会吐出类似的东西:
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
keytool 与 javac
位于同一目录中。 IE:
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin
从 bin 目录中,您可以使用 keytool。
如果您使用的是 Mac/Linux,那么您可以通过在终端中写入以下行来获取 SHA1 指纹:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
在此之后有两件事可能
它会要求你输入密码只需输入
安卓
然后按回车,您可以在如下所示的输出中找到 SHA1 密钥。
它会要求您下载合适的程序(并会给出一些列表)只需在终端中输入以下内容
sudo apt install openjdk-8-jre-headless
然后再次在终端中运行以下命令:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
这一次,您将被引导至第 1 步,您只需输入密码即可
安卓
您将在输出下方获得您的 SHA1 指纹。
打开命令提示符 将工作目录导航到 1.8.0/bin paste keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 如果询问您密码,请按 Enter
如果要从签名 keystore.jks 文件中获取指纹 sha1 密钥 从终端运行以下命令:
keytool -list -v -keystore <.../path/keystore.jks>
例子
keytool -list -v -keystore /Users/Home/Projects/Keystore/myApp_keystore.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name:myApp_alias
Owner: CN=xxx, OU=xxx Dev, O=ZZZ, L=Dhaka, ST=Dhaka, C=BD
..........
Certificate fingerprints:
MD5: 12:10:11:12:11:11:11:11:11:11:33:11:11:11:11:11
SHA1: 11:44:11:11:55:11:17:11:11:66:11:11:88:11:11:77:11:11:01:11
.....................
我想向与我有同样问题的人发布通知。我完成了生成调试 SHA-1 和发布 SHA-1 的步骤。我试图将 Google Sign-In API 与我的应用程序连接起来。
我遇到了调试 .apk 可以正常工作的问题,它可以通过 Google 登录进行连接和身份验证。当手动安装到手机上时,我的版本 .apk 也可以使用。当我将发布的 .apk 发布到 Google Play 商店时,我的 google 登录无法通过身份验证,我会遇到问题!
很长一段时间我都想不通,但我发现我的应用正在被谷歌签名,即开发者控制台顶部的消息显示:Google Play App Signing is enabled for this app。
我去了我的发布管理选项卡,然后向下滚动到应用签名,并在那里找到了 SHA-1。在将其添加到我的代码和我用作 Google 登录后端的“firebase 控制台”上后,一切似乎都正常。看起来我的发布密钥库已被谷歌签名证书取代......我不确定这是否正在发生,但它解决了我的问题并允许我的 Google Play 商店发布 apk 正确地通过谷歌签名进行身份验证在!
逐步解决方案:
打开命令提示符或 Mac 终端 将目录更改为 keytool 文件位置的目录。使用命令 cd <目录路径> 更改目录。 (注意:如果任何目录名称有空格,则在两个单词之间添加 \。示例 cd /Applications/Android\ Studio.app//Contents/jre/jdk/Contents/Home/bin/)要查找 keytool 的位置,你去android studio..打开你的项目。并转到文件>项目结构> SDK位置..并找到JDK位置。通过以下命令运行 keytool: keytool -list -v –keystore <你的 jks 文件路径> (注意:如果任何目录名称有空格,则在两个单词之间添加 \。example keytool -list -v -keystore /Users/username/ Desktop/tasmiah\ mobile/v3/jordanos.jks) 命令提示您输入密码.. 所以输入您的密码.. 然后您会得到结果
这是懒惰编码人员的工具:
1 添加依赖:
compile 'com.vk:androidsdk:1.6.9'
2 在您的活动/应用程序的某处添加以下行:
String[] fingerprints = VKUtil.getCertificateFingerprint(this, getPackageName());
Log.d("SHA1", fingerprints[0]);
3 打开 logcat 并捕获消息。
4 利润!
https://i.stack.imgur.com/3WVSw.png
在Android Studio中打开终端复制命令(keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android)将其粘贴到终端并按回车键