关于google maps:如何在Android Studio中获取SHA-1指纹证书以获得调试模式?

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.更快的方式:

  • 打开Android Studio
  • 打开你的项目
  • 单击Gradle(从右侧面板,您将看到Gradle Bar)
  • 单击Refresh(单击Refresh from Gradle Bar,您将看到项目的List Gradle脚本)
  • 单击您的项目(您的项目名称表单列表(根))
  • 单击"任务"
  • 点击Android
  • 双击signingReport(您将在运行栏中获得SHA1和MD5(有时它将在Gradle控制台中))
  • 从模块选择下拉列表中选择应用程序模块以运行或调试应用程序
  • 查看下面的截图:

    enter image description here

    2.使用Google地图活动:

  • 打开Android Studio
  • 打开你的项目
  • 单击文件菜单 - >选择新建 - >单击Google - >选择Google地图活动
  • 将出现一个对话框 - >单击"完成"
  • Android Studio会自动生成一个名为google_maps_api.xml的XML文件
  • 你会在这里获得调试SHA1密钥(在XML文件的第10行)
  • 检查下面的截图:

    Enter image description here

    Android Studio V 2.2更新

    执行存在问题。

    解:

    • 单击"运行"栏中的"切换任务执行/文本模式"

    检查下面的截图:

    enter image description here

    完成。


    我的问题与我将谷歌地图项目从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值。

    快照:

    Enter image description here


    对于Mac,这非常有效:

    1
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android


    我刚刚找到了在Android Studio中获取SHA-1的案例:

  • 点击您的包,然后选择新建 - > Google - > Google地图活动
  • Android Studio会将您重定向到google_maps_api.xml
  • 你会看到你需要得到的所有google_maps_key

    Image


    为Android生成SHA-1密钥的最佳解决方案来自Android Studio。

    点击最右侧的Gradle:

    >
</p>
<p>
单击刷新图标,您将看到应用程序的名称:
</p>
<p>
<img src=


    [2017年更新]

    第1步:在Android Studio的右上角单击"Gradle"选项。

    Android Studio Click On Gradle option

    第2步:

    - 单击Refresh(单击Refresh from Gradle Bar,您将看到项目的List Gradle脚本)

    - 单击您的项目(您的项目名称表单列表(根))

    - 单击"任务"

    - 点击Android

    - 双击signedReport(您将在Gradle控制台/运行栏中获得SHA1和MD5)

    enter image description here

    第3步:单击Android Studio底部的Gradle Console选项以查看SHA1密钥。

    enter image description here

    第4步:现在您已获得SHA密钥,但无法运行项目。这就是为什么将配置更改为应用程序模式。见下图。

    enter image description here

    像这样。

    enter image description here

    第五步:快乐编码!!


    我将与@Hiren Patel一起回答但在android studio 2.2中略有变化

    enter image description here


    对于Linux&amp;苹果电脑

    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


  • 单击右窗格中的Gradle图标。
  • 单击根项目名称。
  • 单击任务
  • 点击Android
  • 单击signingReport
  • 在底部窗格中,您可以看到运行报告
  • 单击"切换任务执行/文本模式"
  • 你可以看到sha-1
  • Android Studio SHA-1


    要获取生产密钥库的SHA1:

  • 构建 - >生成签名APK ...

  • 使用密码创建密钥库并按照步骤操作

  • 转到Mac / Library / Java / JavaVirtualMachines / jdk1.8.0_20.jdk / Contents / Home / bin,然后在cd命令指向它后将bin文件夹拖到终端,这样就可以使用keytool工具了。所以,在终端写cd(拖动箱这里)然后按回车键。

  • 然后,将其复制并粘贴到终端中:

    1
    keytool -exportcert -alias Your_keystore_AliasName -keystore /Users/Home/Development/AndroidStudioProjects/YoutubeApp/app/YoutubeApp_keystore.jks -list -v

    擦除我的路径并转到存储密钥库的位置并拖动梯形图并在命令行中的-keystore之后将其删除,以便创建路径。

    另外,擦除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的终端中
    enter image description here

    结果!

    enter image description here

    祝好运!!


    如果您使用的是Android Studio,则可以通过Gradle Tasks快速获取SHA-1和MD5证书指纹(调试,发布......所有构建类型!!):

    signingReport

    SHA-1和MD5证书显示在消息日志中。

    Android插件(在Gradle应用程序中配置)创建默认的调试模式。

    com.android.application

    到密钥库的文件路由:

    1
    HOME/.android/debug.keystore

    我建议将debug.keystore附加到build.gradle。为此,将一个文件debug.keystore放在app文件夹中,然后在Gradle app中添加SigningConfigs:

    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"
                }
            }
            ........
        }

    额外:如果要创建发布,请将文件release.keystore放在app文件夹中。 (此示例使用相同的debug.keystore。)


    如果你有Android Studio,那么它非常简单。只需使用Android Studio创建MapActivity,创建后即可进入google_maps_api.xml。在那里,评论中会有一个链接。如果您将其粘贴到浏览器中,它会询问一些细节,然后生成您的API。不需要使用keytool和all。

    截屏:

    Enter image description here


    使用简单的命令:

    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

    注意:对于debug.keystore,密码为"android"。调试密钥库通常位于"%USER_PROFILE%"/.android/debug.keystore


    我想在Softcoder给出的答案中添加一个东西。我看到有些人无法在command line上正确地给出他们的debug.keystore路径。他们看到他们正在做上面接受的确切过程,但它不起作用。此时尝试拖动debug.keystore并将其放在命令行上。如果接受的答案不适合您,这将有所帮助。毫不犹豫地完成整个过程。这是一个很好的答案。


    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。
    这是gradlew signingReport的结果

    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中选择appmobile

    • 选择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"时,最后一个屏幕会打开google_maps_api.xml文件并显示屏幕,其中包含如下说明:

    资源:

    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 NAME

    Alternatively, follow the directions here:
    https://developers.google.com/maps/documentation/android/start#get-key

    Once 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链接剪切并粘贴到您的浏览器中,然后在创建新应用程序时按照上述说明操作。 SHA-1Package names已经在给定的链接中,因此您无需了解它们。但是,当您按照创建项目的说明完成时,它们将位于resources>Values>google_maps_api.xml文件中的项目中。


    这对我有用:

    1
    keytool -exportcert -alias androiddebugkey -keystore

    将path-to-debug-or-production-keystore放在此处,如C: users youruser.android debug.keystore -list -v

    确保您已在命令或终端窗口中的Java\jdk*\bin目录中。

    然后使用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键让你感谢你enter image description here


    获取指纹的最简单方法是通过单击下拉菜单并单击构建,从应用程序切换到已签名的报告。

    enter image description here

    然后,您将能够在底部窗格中看到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