我已经从Eclipse转移到Android Studio。现在,我正在尝试使用我的地图应用程序。所以我需要我的SHA-1指纹证书编号。

当我使用Eclipse时,它位于Windows-> Preferences-> Android-> Build下。但是在Android Studio中,我找不到类似的任何选项,因此我可以轻松找到指纹。我正在使用Windows。我从此链接中了解到:


当您从IDE运行或调试项目时,Android Studio会自动在调试模式下对您的应用进行签名。


,所以我尝试通过此链接设置Java bin路径后,在命令行中运行此代码,很遗憾找不到指纹。有人说这是一个非法选项。

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密钥吗?

评论

获取SHA-1发行版和调试模式android studio gradle的最简单方法。检查此

尝试按照以下步骤操作:如何在Android Studio中获取Sha-1-键?。

#1 楼

最简单的方法:

最后一步为Android Studio V 2.2添加了更新

有两种方法可以做到这一点。

1。更快的方法:


打开Android Studio
打开项目
单击Gradle(在右侧面板中,您将看到Gradle栏)
单击刷新(单击“从Gradle栏刷新”,您将看到列出项目的Gradle脚本)
单击项目(您的项目名称表单列表(根))
单击任务
单击Android
双击signingReport(您将在运行栏中获得SHA1和MD5(有时会在Gradle控制台中获得))
从模块选择下拉列表中选择应用程序模块以运行或调试您的应用程序

检查以下屏幕截图:



2。使用Google Maps活动:


打开Android Studio
打开项目
单击文件菜单->选择新建->单击Google->选择Google Maps活动

将出现一个对话框->单击“完成”

Android Studio将自动生成一个名为google_maps_api.xml的XML文件。

您将获得调试SHA1键(在XML文件的第10行处)

检查以下屏幕截图:



Android Studio V 2.2更新

执行存在问题。

解决方案:


从运行栏单击切换任务执行/文本模式


检查以下屏幕截图:



完成。

评论


太好了:),但是我可以在Google Developer Console中使用此SHA1(按您的描述生产)为我的应用程序创建凭据吗?因为它在(Signing Report)窗口中说(config:debug)不是发布模式?

–阿什拉夫·阿尔沙哈维(Ashraf Alshahawy)
16年1月25日在13:35

很高兴找到不涉及命令行的方法。

– Androidcoder
16年1月28日在19:00

你是狗屎家伙,这很好用,因为我无法在我的.android文件夹@HirenPatel中找到debug.keystore

–Manny265
16 Mar 7 '16 at 9:34

有关密钥库的SHA1版本,请访问stackoverflow.com/questions/15727912/…

– Hiren Patel
16 Mar 7 '16 at 10:08

从Android Studio 2.2开始,它显示在Gradle控制台中未运行

–adsamcik
16-09-21在7:02

#2 楼

我的问题与我将Google Maps项目从Eclipse转移到Android Studio相同。我已通过以下操作解决了我的问题:

通过以下命令转到您的Java bin目录:

C:\Program Files\Java\jdk1.7.0_71\bin>


现在在下面的命令中键入在命令窗口(CMD.EXE)中:

keytool -list -v -keystore c:\users\your_user_name\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android


示例:

keytool -list -v -keystore c:\users\James\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android


也可以如果您不知道用户名,请用cmd编写:

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值。

快照:



评论


keytool -list -v -keystore“%USERPROFILE%\。android \ debug.keystore” -alias androiddebugkey -storepass android -keypass android而不是键入自己的用户名

–user3137329
2015年8月1日在5:05



是的,但是在堆栈溢出的许多示例中已经显示了“ keytool -list -v -keystore“%USERPROFILE%\。android \ debug.keystore” -alias androiddebugkey -storepass android -keypass android”。我只想再举一个例子。

–贾米尔
2015年8月1日在21:34



我无法从CMD复制SHA1,因此通过在命令后面添加:> output.txt,将给定命令的整个输出移至文件。您也可以添加|夹在命令后面。您将在Windows剪贴板中获得命令的输出。我希望它也可以为其他人节省时间。有关使用|的更多信息夹

– Sjoerd Pottuit
16年1月5日14:58



@SPottuit:clip.exe有趣的提示,不知道它存在,谢谢。另外,删除-v将只为您提供SHA1作为输出,或者在Windows上,您可以通过| | | |来传递-v的输出。找到“ SHA1” |夹

– Dan Dar3
16-3-22在13:33



#3 楼

对于Mac,这非常有效:

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


评论


我也很好

–Ranjith Kumar
17-10-9在11:04

#4 楼

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


单击您的程序包,然后选择新建-> Google-> Google Maps Activity

Android Studio将您重定向到google_maps_api.xml

,您将看到获取google_maps_key所需的全部内容。



评论


我找到了Sha1,但它使我搞砸了项目,它说“ Error:使用外部系统时发生异常:”并更改了项目中的所有结构...。谢谢!!!徒劳无功!!!我认为没有办法回来。

–user3050757
15年6月24日在15:27

#5 楼

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

单击最右侧的Gradle:



单击刷新图标,您将看到应用程序的名称:



单击任务->报告->签名报告:



在控制台底部找到SHA-1键:



评论


这次真是万分感谢!其他替代方法均无效,而且实际上实际上更简单。

– Kebman
17年3月19日在16:04

谢谢你这么多哥们!

–Hanish Sharma
17年5月2日,下午5:31

在Android 3.1.4上:任务-> android-> signingReport

– Mete
18年8月29日在7:36

最好的答案

–Nurseyit Tursunkulov
19年11月12日14:29

但这不会为发布而生成SHA1,仅用于调试

–黑暗交响曲
11月19日17:53

#6 楼

[2017年更新]

步骤1:在Android Studio的右上角,单击“ Gradle”选项。



步骤2:

-单击刷新(从Gradle Bar单击刷新,您将看到列出项目的Gradle脚本)

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

-单击任务

-单击Android

-双击signingReport(您将在其中获得SHA1和MD5步骤3:单击Android Studio底部的Gradle Console选项,以查看您的SHA1密钥。



步骤4:现在您有了SHA键,但无法运行项目,这就是为什么将配置更改为应用程序模式。参见下图。



喜欢这个。



步骤5:编码愉快!

评论


感谢您加入非常重要的第4步!

– SMBiggs
12月3日下午16:25

#7 楼

我要使用@Hiren Patel答案,但在android studio 2.2及更高版本中会稍作更改


评论


我在android studio 2.2.2中找不到此切换

–Zeeshan Shabbir
16年11月12日下午4:56

您是否逐步遵循@hiren Patel的回答?

– Arpit Patel
16年11月12日在7:52

#8 楼

对于Linux和Mac

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


评论


@vicky示例,请.. /home/desktop/././。 ,abc.jks,所有密码为n,我们是否需要所有这些详细信息?

–螃蟹
15年11月27日在11:45

@prabs,我无法理解你。你能解释更多吗?

– Vicky
2015年12月21日下午5:16

@vicky我们需要在执行命令之前对其进行编辑。如果是,那么我们应该提供哪些详细信息。那是我的查询。

–螃蟹
2015年12月21日在5:23

@prabs,您不需要为调试键提供任何其他信息,只需在Linux终端中执行上述命令即可。

– Vicky
16年1月18日在6:37

#9 楼


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



评论


谢谢。很棒。 / i不知道我必须切换它。

–劳尔
18-2-28在6:43

#10 楼

我是这样做的:

步骤1:转到此文件夹

On Mac: /Users/<username>/.android/

On Windows: C:\Documents and Settings\<username>\.android\

On Linux: ~/.android/


步骤2:运行此命令行:

keytool -list -v -keystore debug.keystore -storepass android


您将看到SHA-1键。

评论


Mac的/ Users / <用户名>是用户的主文件夹,因此〜可以使用快捷方式,就像Linux一样

–user28434
19-09-25在15:13

#11 楼

我使用终端从Mac直接使用了以下命令。我有SHA1 Finger。这是命令:

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


评论


它将也适用于Windows的cmd是:keytool -list -v -keystore%USERPROFILE%\。android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

–哈努曼
17年5月11日在18:15

#12 楼

要为生产密钥库获取SHA1,请执行以下操作:


构建->生成签名的APK ...
使用密码创建密钥库并按照步骤操作
转到Mac /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin并将bin文件夹拖到cd命令后指向终端,以指向它,以便可以使用keytool工具。因此,在终端中输入cd(在此处拖动垃圾箱),然后按Enter。

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

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键,即使您看不到密码也没有输入。


评论


您获得了THANK SO MUCH大奖,当您输入密码时,终端不会显示它收到键盘输入,但实际上可以。

–轮渡
16-10-23在18:51

#13 楼

在Gnu / Linux中非常简单-Mac-Windows

第一:-复制此命令

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


第二:现在复制并粘贴Android Studio终端中的命令


结果!



祝你好运!

#14 楼

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


signingReport


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

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


com.android.application


到密钥库的文件路径:

HOME/.android/debug.keystore


I建议将debug.keystore附加到build.gradle。为此,将一个文件debug.keystore放在一个应用程序文件夹中,然后在Gradle应用程序中添加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。)

评论


我做了您上面所说的,但没有得到版本SHA1,因为它返回了我:变体:release Config:无

–阿什拉夫·阿尔沙哈维(Ashraf Alshahawy)
16 Jan 25 '14:41

菜单AndroidStudio:构建/生成已签名的apk并创建新文件。在build.gradle上更改signingConfig> release之后(以上)

– SergioLucas
16 Jan 29 '18:27



#15 楼

如果您有Android Studio,那么它非常非常简单。只需使用Android Studio创建MapActivity,然后在创建后进入google_maps_api.xml。在其中将有评论中给出的链接。如果将其粘贴到浏览器中,它将要求您填写一些详细信息,然后将生成您的API。不需要全部使用keytool。

屏幕截图:



评论


但这仅适用于调试。您必须手动确定释放密钥指纹。

–Hyndrix
2015年5月11日下午4:51

@Hyndrix您如何手动确定释放键指纹?

– Micro
15年8月17日在18:33

这是完全不必要的步骤。无需为此专门创建MapActivity。您只需要查看Gradle项目>应用>任务> android> signingReports,并在SHA1下的Gradle控制台中查看结果。

– Kebman
17-3-19在16:09



#16 楼

这在我的情况下有效:使用%USERPROFILE%而不是自动给出存储在此路径中的路径.keystore文件C:Users /用户名/.android:

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android


#17 楼

使用简单的命令:

keytool -exportcert -keystore调试路径或生产密钥库-list -v

,您将获得SHA1密钥。 />

#18 楼

对于Windows 10,从Android Studio终端:

keytool -exportcert -alias androiddebugkey -keystore %USER_PROFILE%"/.android/debug.keystore -list -v


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

#19 楼

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

#20 楼


我发现使用Android Studio查找MD5,SHA-1指纹非常简单。


运行项目
转到Gradle菜单(菜单:视图->工具窗口-> Gradle)
在Gradle窗口中转到“ signingReport”。 (您的项目->任务-> android-> signingReport)
运行它。 (使用双击或Ctrl + Shift + F10键)
在“运行”窗口中,您将找到所有信息。




它仅在调试模式下有效。在realease模式下,我看不到sha-1。
这里是gradlew signingReport的结果

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

#21 楼

单击右侧面板上的Gradle图标,然后单击(根)。


任务> android> signingReport


然后使用Gradle脚本将执行,您将看到您的密钥。

#22 楼

很简单,在启动画面中调用以下方法:hash()和getCertificateSHA1Fingerprint(),然后在日志中会显示键。

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();
        }


谢谢。 >

#23 楼

按照API管理器中的使用keytool的说明进行操作:


从AndroidManifest.xml文件中获取包名称。然后使用
以下命令获取指纹:

keytool -list -v -keystore mystore.keystore


#24 楼


转到文件>项目结构
app中选择您要命名的mobileModules
选择Signing选项卡。
您可以单击+按钮添加证书。


评论


您能举个例子给我看看详细的步骤吗?

– Setu Kumar Basak
2014年12月23日在8:33

#25 楼

您可以使用以下命令并使用您的系统名称更改AJAY SUNDRIYAL。这仅适用于debug.keystore。这将对您有用。

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


#26 楼

这对我有用:

keytool -exportcert -alias androiddebugkey -keystore


将路径放置到调试或生产密钥库,例如C:\ users \ youruser.android \ debug.keystore -list -v

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

然后将Android用作密码。

有时网络资源可能会产生误导。这些是可以工作的:


SHA1指纹教程
快速入门示例应用程序


#27 楼

密钥库的路径用双引号引起来。它工作正常。

keytool -list -v -keystore "C:\Users\App innovation\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android


#28 楼

如果您需要用于Google Maps的SHA1,则只需在LogCat中查看错误日志即可。

#29 楼

在Android Studio V 1.5.1中创建新的“ Google Maps Project”时,最后一个屏幕将打开google_maps_api.xml文件,并显示以下说明的屏幕:

资源:


TODO:在运行应用程序之前,您需要一个Google Maps API密钥。

要获得一个,请遵循以下链接,按照说明进行操作,然后按“创建”:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=您的SHA-1 +您的包裹名称

您还可以添加使用以下行将您的凭据保存到现有密钥:
您的SHA-1:您的软件包名称

或者,请按照以下说明进行操作:https://developers.google.com/maps/ documentation / android / start#get-key

获得密钥(以“ AIza”开头)后,请在此文件中替换“ google_maps_key”字符串。 <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR GOOGLE MAPS KEY</string>


要获取您的GOOGLE MAPS KEY,只需将给出的URL链接粘贴并粘贴到浏览器中,并在创建新应用程序时遵循上面的说明。 SHA-1Package names已在给定的链接中,因此您无需了解它们。但是,它们将位于resources>Values>google_maps_api.xml文件中的项目中,当您按照创建项目的说明进行操作时,该文件已完成。

#30 楼

对我而言,最快捷的方法是在终端命令行中键入./gradlew signingReport