How to get the SHA-1 fingerprint certificate in Android Studio for debug mode?
我已将自己从Eclipse转移到Android Studio。现在我正在尝试使用我的地图应用程序。所以我需要我的SHA-1指纹证书号码。
当我使用Eclipse时,它正好在Windows - > Preferences - > Android - > Build下。但是在Android Studio中,我找不到这样的选项,以便我可以轻松找到指纹。我正在使用Windows。我从这个链接中读到:
Android Studio signs your app in debug mode automatically when you
run or debug your project from the IDE.
所以我尝试在从此链接设置我的Java bin路径后在命令行中运行它,但遗憾的是找不到我的指纹。据说这是非法的选择。
1 | keytool -list -v -keystore"%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
有没有办法从Android Studio中找到SHA-1指纹,就像在Eclipse中一样容易?由于我是Android Studio中的新手,找到它的完整过程是什么?
我想要添加的另一件事是我的Eclipse生成了SHA-1指纹,之前我在Google开发人员控制台中将该应用程序注册在该指纹上,并且我通过该API密钥在Eclipse中使用该应用程序。在Android Studio中我的项目是否可以使用相同的API密钥?
最简单的方法:
在上一步中为Android Studio V 2.2添加了更新
有两种方法可以做到这一点。
1.更快的方式:
查看下面的截图:
2.使用Google地图活动:
检查下面的截图:
Android Studio V 2.2更新
执行存在问题。
解:
- 单击"运行"栏中的"切换任务执行/文本模式"
检查下面的截图:
完成。
我的问题与我将谷歌地图项目从Eclipse转移到Android Studio一样。我通过以下方式解决了我的问题:
通过以下命令转到Java bin目录:
1 | C:\Program Files\Java\jdk1.7.0_71\bin> |
现在在命令窗口(CMD.EXE)中键入以下命令:
1 | keytool -list -v -keystore c:\users\your_user_name\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android |
例:
1 | keytool -list -v -keystore c:\users\James\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android |
或者如果你不知道用户名,你可以在cmd中写这个:
1 | keytool -list -v -keystore"%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
你会得到SHA1。
然后我从https://code.google.com/apis/console创建了一个新密钥,因为我的软件包名称已更改,然后在我的应用程序中使用此密钥。它工作正常。
确保你在jdkX.X.X_XX的BIN文件夹中(我的文件夹名称是jdk1.7.0_71),否则如果你不知道你有什么文件夹名称,那么打开Java文件夹找到它,你会看到文件夹名称是什么,但您必须在BIN文件夹中,然后运行此命令。今天我通过上面的过程在cmd命令窗口中得到了我的SHA1值。
快照:
对于Mac,这非常有效:
1 | keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android |
我刚刚找到了在Android Studio中获取SHA-1的案例:
你会看到你需要得到的所有
为Android生成SHA-1密钥的最佳解决方案来自Android Studio。
点击最右侧的Gradle:
[2017年更新]
第1步:在Android Studio的右上角单击"Gradle"选项。
第2步:
- 单击Refresh(单击Refresh from Gradle Bar,您将看到项目的List Gradle脚本)
- 单击您的项目(您的项目名称表单列表(根))
- 单击"任务"
- 点击Android
- 双击signedReport(您将在Gradle控制台/运行栏中获得SHA1和MD5)
第3步:单击Android Studio底部的Gradle Console选项以查看SHA1密钥。
第4步:现在您已获得SHA密钥,但无法运行项目。这就是为什么将配置更改为应用程序模式。见下图。
像这样。
第五步:快乐编码!!
我将与@Hiren Patel一起回答但在android studio 2.2中略有变化
对于Linux&苹果电脑
1 | keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android |
我使用终端从Mac直接使用了以下命令。我有SHA1手指。这是命令:
1 | keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android |
要获取生产密钥库的SHA1:
构建 - >生成签名APK ...
使用密码创建密钥库并按照步骤操作
转到Mac / Library / Java / JavaVirtualMachines / jdk1.8.0_20.jdk / Contents / Home / bin,然后在cd命令指向它后将bin文件夹拖到终端,这样就可以使用keytool工具了。所以,在终端写
然后,将其复制并粘贴到终端中:
1 | keytool -exportcert -alias Your_keystore_AliasName -keystore /Users/Home/Development/AndroidStudioProjects/YoutubeApp/app/YoutubeApp_keystore.jks -list -v |
擦除我的路径并转到存储密钥库的位置并拖动梯形图并在命令行中的
另外,擦除Your_keystore_AliaseName以放置您在创建时使用的别名keystone名称。
按Enter并输入密码:)
当您输入密码时,终端不会显示它接收键盘条目,但它实际上是这样,所以输入密码并按下Enter,即使您没有看到密码输入。
在Gnu / Linux - Mac - Windows中非常容易
首先: - 复制此命令
1 | keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android |
第二步:现在将命令复制并粘贴到Android Studio的终端中
结果!
祝好运!!
如果您使用的是Android Studio,则可以通过Gradle Tasks快速获取SHA-1和MD5证书指纹(调试,发布......所有构建类型!!):
signingReport
SHA-1和MD5证书显示在消息日志中。
Android插件(在Gradle应用程序中配置)创建默认的调试模式。
com.android.application
到密钥库的文件路由:
1 | HOME/.android/debug.keystore |
我建议将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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" } } ........ } |
额外:如果要创建发布,请将文件
如果你有Android Studio,那么它非常简单。只需使用Android Studio创建MapActivity,创建后即可进入google_maps_api.xml。在那里,评论中会有一个链接。如果您将其粘贴到浏览器中,它会询问一些细节,然后生成您的API。不需要使用keytool和all。
截屏:
使用简单的命令:
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
你将获得SHA1密钥。
这适用于我的情况:使用%USERPROFILE%而不是自动提供存储在此路径中的路径.keystore文件C:Users / user name / .android:
1 | keytool -list -v -keystore"%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
对于Windows 10,来自Android Studio终端:
1 | keytool -exportcert -alias androiddebugkey -keystore %USER_PROFILE%"/.android/debug.keystore -list -v |
注意:对于
我想在Softcoder给出的答案中添加一个东西。我看到有些人无法在
I found a very easy process to find you MD5, SHA-1 fingerprint using
Android Studio.Run your project Go to Gradle Menu (Menu: View -> Tool Windows -> Gradle) Go to 'signingReport' in Gradle window. (Your project -> Tasks -> android -> signingReport) Run it. (Using double-click or Ctrl + Shift + F10) In Run window you will find all info.
它仅适用于调试模式。在realease模式中,我看不到sha-1。
这是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Variant: release Config: none ---------- Variant: releaseUnitTest Config: none ---------- Variant: debug Config: debug Store: path\Android\avd\.android\debug.keystore Alias: AndroidDebugKey MD5: xx:xx:xx:62:86:B7:9C:BC:FB:AD:C8:C6:64:69:xx:xx SHA1: xx:xx:xx:xx:0F:B0:82:86:1D:14:0D:AF:67:99:58:1A:01:xx:xx:xx Valid until: Friday, July 19, 2047 ---------- |
所以我必须使用keytool来获得sha-1。这里官方Firebase文档:
Get_sha-1_for_release
我是这样做的:
第1步:转到此文件夹
1 2 3 4 5 | On Mac: /Users/<username>/.android/ On Windows: C:\Documents and Settings\<username>\.android\ On Linux: ~/.android/ |
第2步:运行此命令行:
1 | keytool -list -v -keystore debug.keystore -storepass android |
您将看到SHA-1密钥。
单击右侧面板上的Gradle图标,然后单击(根)。
Tasks > android > signingReport
然后Gradle脚本将执行,您将看到您的密钥。
使用keytool使用API?? Manager中的说明:
Get the package name from your AndroidManifest.xml file. Then use the
following command to get the fingerprint:
keytool -list -v -keystore mystore.keystore
如果您需要用于Google地图的SHA1,则只需在LogCat中查看错误日志即可。
-
转到文件>项目结构
从Modules 中选择app 或mobile -
选择
Signing 选项卡。 -
您可以在 + 按钮上添加证书。
密钥库的路径是双引号。它工作正常。
1 | keytool -list -v -keystore"C:\Users\App innovation\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
在Android Studio V 1.5.1中创建新的"Google Maps Project"时,最后一个屏幕会打开
资源:
TODO: Before you run your application, you need a Google Maps API key.
To get one, follow this link, follow the directions and press"Create" at the end:
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r= YOUR SHA-1 + YOUR PACKAGE NAME
You can also add your credentials to an existing key, using this line:
YOUR SHA-1:YOUR PACKAGE NAMEAlternatively, follow the directions here:
https://developers.google.com/maps/documentation/android/start#get-keyOnce you have your key (it starts with"AIza"), replace the"google_maps_key" string in this file.
YOUR GOOGLE MAPS KEY
要获取您的GOOGLE MAPS KEY,只需将提供的URL链接剪切并粘贴到您的浏览器中,然后在创建新应用程序时按照上述说明操作。
这对我有用:
1 | keytool -exportcert -alias androiddebugkey -keystore |
将path-to-debug-or-production-keystore放在此处,如C: users youruser.android debug.keystore -list -v
确保您已在命令或终端窗口中的
然后使用Android作为密码。
有时网络资源可能会产生误导。这些是工作的:
-
SHA1指纹教程
-
快速入门示例应用
您可以使用以下命令并使用您的系统名称更改AJAY SUNDRIYAL。这仅适用于您的debug.keystore。这将适合您。
1 | C:\Program Files\Java\jdk1.8.0_91\bin>keytool -list -v -keystore"c:\users\AJAY SUNDRIYAL\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android |
第一步打开您的C盘程序文件 - >打开JAVA文件夹 - >在jarsigner.exe上打开Bin和DoubleClick
然后打开Cmd
转到C: Program Files Java jdk1.8.0_191 bin然后输入然后转到C: Program Files Java jdk1.8.0_191 bin> keytool -list -keystore"F: BTG UPDATE BUILD Beyond_The_Game。 JKS"
输入JUST Show输入Kaystoer密码*****输入你的PAssword最后输入你的Release SHA键让你感谢你
获取指纹的最简单方法是通过单击下拉菜单并单击构建,从应用程序切换到已签名的报告。
然后,您将能够在底部窗格中看到sha1指纹,您可以在其中看到调试报告和堆栈跟踪。当您想在设备或模拟器上运行应用程序时,N.B记得切换回应用程序。
很简单,在你的Splash Screen中调用这个方法:hash()和getCertificateSHA1Fingerprint(),然后在日志中可以看到键
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | private void hash() { PackageInfo info; try { info = getPackageManager().getPackageInfo( this.getPackageName(), PackageManager.GET_SIGNATURES); for (android.content.pm.Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.e("sagar sha key", md.toString()); String something = new String(Base64.encode(md.digest(), 0)); Log.e("sagar Hash key", something); System.out.println("Hash key" + something); } } catch (PackageManager.NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } private void getCertificateSHA1Fingerprint() { PackageManager pm = this.getPackageManager(); String packageName = this.getPackageName(); int flags = PackageManager.GET_SIGNATURES; PackageInfo packageInfo = null; try { packageInfo = pm.getPackageInfo(packageName, flags); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); InputStream input = new ByteArrayInputStream(cert); CertificateFactory cf = null; try { cf = CertificateFactory.getInstance("X509"); } catch (CertificateException e) { e.printStackTrace(); } X509Certificate c = null; try { c = (X509Certificate) cf.generateCertificate(input); } catch (CertificateException e) { e.printStackTrace(); } String hexString =""; try { MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(c.getEncoded()); Log.e("sagar SHA",byte2HexFormatted(publicKey)); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (CertificateEncodingException e) { e.printStackTrace(); } } public static String byte2HexFormatted(byte[] arr) { StringBuilder str = new StringBuilder(arr.length * 2); for (int i = 0; i < arr.length; i++) { String h = Integer.toHexString(arr[i]); int l = h.length(); if (l == 1) h ="0" + h; if (l > 2) h = h.substring(l - 2, l); str.append(h.toUpperCase()); if (i < (arr.length - 1)) str.append(':'); } return str.toString(); } |
谢谢。
我正在这样做它的工作
1 | keytool.exe -list -v -alias ALIAS_NAME -keystore"E:\MID_PATH\trackMeeKeyStore.jks" -storepass PASS -keypass PASS |