Como obter o certificado de impressão digital SHA-1 no Android Studio para o modo de depuração?


493

Mudei-me do Eclipse para o Android Studio . Agora estou tentando trabalhar no meu aplicativo de mapa. Então, eu preciso do meu número de certificado de impressão digital SHA-1.

Quando eu estava usando o Eclipse, estava bem no Windows -> Preferências -> Android -> Compilar . Mas no Android Studio não consegui encontrar nenhuma opção como essa para encontrar facilmente a impressão digital. Estou usando o Windows. Eu li neste link que:

O Android Studio assina seu aplicativo no modo de depuração automaticamente quando você executa ou depura seu projeto a partir do IDE.

Então, tentei executar isso na linha de comando depois de definir o caminho do bin Java a partir deste link e, infelizmente, não consegui encontrar minha impressão digital. Está dizendo que é uma opção ilegal .

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

Existe uma maneira de encontrar a impressão digital SHA-1 do Android Studio como se fosse muito fácil no Eclipse? Como sou novato no Android Studio, qual é o processo completo para encontrá-lo?

Outra coisa que quero acrescentar é que meu Eclipse gera a impressão digital SHA-1 e anteriormente eu tenho meu aplicativo registrado nessa impressão digital no console do desenvolvedor do Google e trabalhei nesse aplicativo no Eclipse por essa chave de API. A mesma chave de API pode ser trabalhada neste meu projeto no Android Studio?


1
A maneira mais fácil de obter o SHA-1 para lançamento e modo de depuração no android studio gradle. Verifique isto
Naeem Ibrahim 16/11

Respostas:


1255

Maneiras mais fáceis de sempre:

Atualização adicionada para o Android Studio V 2.2 na última etapa

Existem duas maneiras de fazer isso.

1. Maneira mais rápida :

  1. Abra o Android Studio
  2. Abra seu projeto
  3. Clique em Gradle (no painel do lado direito, você verá a barra Gradle )
  4. Clique em Atualizar (clique em Atualizar na barra Gradle , você verá a lista scripts Gradle do seu projeto)
  5. Clique em Seu projeto ( lista de formulários Nome do seu projeto (raiz))
  6. Clique em Tarefas
  7. Clique no Android
  8. Clique duas vezes em signatureReport (você obterá SHA1 e MD5 na barra de execução (às vezes, estará no Gradle Console))
  9. Selecione o módulo do aplicativo no menu suspenso de seleção do módulo para executar ou depurar seu aplicativo

Verifique a imagem abaixo:

insira a descrição da imagem aqui

2. Trabalhe com a atividade do Google Maps :

  1. Abra o Android Studio
  2. Abra seu projeto
  3. Clique no menu Arquivo -> Selecionar novo -> Clique no Google -> Selecionar atividade do Google Maps
  4. Uma caixa de diálogo seria exibida -> clique em Concluir
  5. O Android Studio geraria automaticamente um arquivo XML nomeado comgoogle_maps_api.xml
  6. Você obteria a chave SHA1 de depuração aqui (na linha número 10 do arquivo XML)

Confira a captura de tela abaixo:

Digite a descrição da imagem aqui

Atualização do Android Studio V 2.2

Há um problema com a execução .

Solução:

  • Clique em Alternar execução de tarefas / modo de texto na barra Executar

Confira a captura de tela abaixo:

insira a descrição da imagem aqui

Feito.


6
Ótimo :) mas posso usar este SHA1 (produzido como você descreveu) no meu console do desenvolvedor do Google para criar credenciais para o meu aplicativo? Porque na janela (Relatório de assinatura) diz (config: debug) não liberar modo?
Ashraf Alshahawy

2
É bom ter um meio de encontrá-lo que não envolva a linha de comando.
Androidcoder

2
você é a merda cara isso funciona perfeitamente desde que eu não poderia localizar debug.keystore na minha .android pasta @HirenPatel
Manny265

2
Para SHA1 lançamento para armazenamento de chaves, consulte stackoverflow.com/questions/15727912/... um
Hiren Patel

12
A partir do Android Studio 2.2 mostra-se na consola Gradle not Run
adsamcik

296

Meu problema é o mesmo que também mudei meu projeto do Google Maps do Eclipse para o Android Studio . Eu resolvi meu problema seguindo este procedimento:

Vá para o diretório bin do Java através do comando:

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

Agora digite o comando abaixo na sua janela de comando (CMD.EXE):

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

Exemplo:

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

Ou você pode simplesmente escrever isso em cmd se não souber o nome de usuário:

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

E você receberá o SHA1.

Em seguida, criei uma nova chave em https://code.google.com/apis/console devido ao nome do meu pacote ser alterado e, em seguida, use essa chave no meu aplicativo. Funciona bem.

Verifique se você está na pasta BIN do jdkX.X.X_XX (o nome da minha pasta é jdk1.7.0_71) , ou então, se você não souber qual o nome da pasta, encontre-o abrindo a pasta Java e verá qual é o nome da pasta, mas você deve estar na sua pasta BIN e, em seguida, execute este comando. Hoje eu tenho meu valor SHA1 em uma janela de comando cmd pelo procedimento acima.

INSTANTÂNEO:

Digite a descrição da imagem aqui


1
keytool -list -v -keystore "% USERPROFILE% \ android \ debug.keystore." -alias androiddebugkey -storepass android -keypass android Em vez de digitar o seu próprio nome de usuário

Sim, mas como "keytool -list -v -keystore"% USERPROFILE% \. Android \ debug.keystore "-alias androiddebugkey -storepass android -keypass android" já é mostrado em muitos exemplos de estouro de pilha ... eu só quero para dar outro exemplo.
Jamil

1
Como não consegui copiar o SHA1 do CMD, movi toda a saída do seu comando para um arquivo adicionando: > output.txtbehind do seu comando. Você também pode adicionar | clippor trás do comando. Você obterá a saída do comando na área de transferência do Windows. Espero que também economize tempo para os outros. Mais informações sobre o uso | clip
Sjoerd Pottuit

1
@Spottuit: Dica interessante para clip.exe, não sei se ela existe, obrigado. Além disso, a remoção -vvai lhe dar o SHA1 apenas como saída, ou no Windows, você pode canalizar a saída do -v através| find "SHA1" | clip
Dan Dar3

131

Para Mac, isso funcionou perfeitamente:

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

bem para mim também
Ranjith Kumar

112

Acabei de encontrar o caso para obter o SHA-1 no Android Studio:

  1. Clique no seu pacote e escolha Novo -> Google -> Atividade do Google Maps
  2. O Android Studio redireciona você para google_maps_api.xml

E você verá tudo o que precisa para obter google_maps_key.

Imagem


1
Encontrei o Sha1, mas ele me ferrou no projeto, dizia "Erro: exceção ao trabalhar com sistema externo:" e alterei toda a estrutura do meu projeto .... Obrigado !!! por nada!!! Eu acho que não há como voltar.
user3050757

41

A melhor solução para gerar uma chave SHA-1 para Android é do Android Studio .

Clique em Gradle no lado direito:

Clique no ícone de atualização e você verá o nome do aplicativo:

Clique em Tarefas -> Relatório -> Relatório de assinatura :

Localize a chave SHA-1 na parte inferior do console:


Obrigado por isso! Nenhuma das outras alternativas funcionou e, de qualquer maneira, isso era ainda mais simples.
`` Kebman

Obrigado tanto amigo!
Hanish Sharma

No Android 3.1.4: Tarefas -> android -> signingReport
Mete

a melhor resposta
Nurseyit Tursunkulov 12/11/19

36

[Atualizado em 2017]

Etapa 1: no canto superior direito do Android Studio, clique na opção Gradle.

Android Studio Clique na opção Gradle

Passo 2:

- Clique em Atualizar (Clique em Atualizar na barra Gradle, você verá os scripts List Gradle do seu projeto)

- Clique no seu projeto (sua lista de formulários de nome do projeto (raiz))

- Clique em Tarefas

- Clique no Android

- Clique duas vezes em signatureReport (você receberá SHA1 e MD5 no Gradle Console / Run Bar)

insira a descrição da imagem aqui

Etapa 3: clique na opção Gradle Console, na parte inferior do Android Studio, para ver sua chave SHA1.

insira a descrição da imagem aqui

Etapa 4: agora você tem a chave SHA, mas não pode executar seu projeto. É por isso que altere sua configuração para o modo de aplicativo. Veja a imagem abaixo.

insira a descrição da imagem aqui

Como isso.

insira a descrição da imagem aqui

Etapa 5: Feliz codificação !!


21

Estou indo com resposta @Henen Patel, mas mudar ligeiramente no android studio 2.2

insira a descrição da imagem aqui


eu sou incapaz de encontrar essa alternância no estúdio android 2.2.2
Zeeshan Shabbir

Você seguiu a resposta de @hiren Patel passo a passo?
Arpit Patel

20

Para Linux e Mac

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

@vicky Exemplo, por favor .. /home/desktop/././. , abc.jks, qual senha n all, precisamos de todos esses detalhes?
Prabs

@prabs, não posso te pegar. você pode explicar um pouco mais?
Vicky

@ Ricky, precisamos editar o comando antes de executá-lo. Se sim, quais detalhes devemos fornecer. Essa é a minha consulta.
Prabs

1
@prabs, você não precisa fornecer nenhuma informação extra para a chave de depuração; basta executar o comando acima no seu terminal linux.
Vicky

14
  1. Clique no ícone Gradle no painel direito.
  2. Clique no nome do projeto raiz.
  3. Clique em Tarefas
  4. Clique em Android
  5. Clique em assinar
  6. no painel inferior, onde você vê Executar relatório
  7. Clique em "Alternar execuções de tarefas / modo de texto"
  8. você pode ver o sha-1

Android Studio SHA-1


1
Obrigado. funcionou muito bem. Eu não sabia que tinha que alternar.
Raul

12

Eu fiz assim:

Etapa 1: Vá para esta pasta

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

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

On Linux: ~/.android/

Etapa 2: Execute esta linha de comando:

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

Você verá a tecla SHA-1.


/Users/<username>para Mac é a pasta pessoal do usuário, de modo ~atalho pode ser usado, assim como paraLinux
user28434

Obrigado pela sua assistência.
Aoun

11

Eu usei diretamente o seguinte comando do meu Mac usando o terminal. Eu tenho o dedo SHA1. Este é o comando:

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

ele vai trabalhar para Windows também cmd é:. keytool -list -v -keystore% USERPROFILE% \ android \ debug.keystore -alias androiddebugkey -storepass android -keypass android
Hanuman

9

Para obter o SHA1 para um keystore de produção:

  1. Criar -> Gerar APK assinado ...

  2. Crie keystore com senha e siga as etapas

  3. Vá para o seu Mac / Library / Java / JavaVirtualMachines / jdk1.8.0_20.jdk / Conteúdo / Home / bin e arraste a pasta bin para o terminal após o comando cd para apontá-lo para que você possa usar a ferramenta keytool. Portanto, na gravação do terminal cd(arraste a lixeira aqui) e pressione enter.

  4. Em seguida, copie e cole isso no terminal:

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

    Apague meu caminho e vá para onde você armazenou seu keystore, arraste seu keystone e solte-o depois -keystore na linha de comando para que o caminho seja criado.

    Além disso, apague Your_keystore_AliaseName para colocar seu nome de keystone alternativo que você usou quando o criou.

  5. Pressione Entere digite a senha :)

  6. Quando você digita a senha, o terminal não mostra que recebe entradas do teclado, mas na verdade recebe; portanto, insira a senha e pressione Entermesmo que você não veja a senha digitada.


Você recebeu meu THANK SO MUCHprêmio por When you enter the password, the terminal won't show that it receives keyboard entries, but it actually does.
Farid

7

É muito, muito fácil no Gnu / Linux - Mac - Windows

Primeiro: - copie este comando

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

Segundo: Agora copie e cole o comando no terminal do Android Studio insira a descrição da imagem aqui

Resultado!

insira a descrição da imagem aqui

Boa sorte!!


7

Se você estiver usando o Android Studio, poderá obter rapidamente a impressão digital do certificado SHA-1 e MD5 (depurar, liberar ... todos os tipos de compilação !!) através das Tarefas Gradle :

signatureReport

Os certificados SHA-1 e MD5 são mostrados em Logs de mensagens .

O plug-in Android (configurado no aplicativo Gradle) cria um modo de depuração por padrão.

com.android.application

Rota do arquivo para o keystore:

HOME/.android/debug.keystore

Eu recomendo anexar debug.keystore a build.gradle. Para fazer isso, coloque um arquivo debug.keystore,, em uma pasta de aplicativo e adicione Add SigningConfigs in Gradle app:

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

Extra: se você deseja criar para lançamento, coloque um arquivo release.keystore,, em uma pasta de aplicativo. (Este exemplo usa o mesmo debug.keystore.)


1
Eu fiz o que você disse acima, mas não recebo o release SHA1, pois ele me retorna: Variante: release Config: none
Ashraf Alshahawy

Menu AndroidStudio: construa / gere apk assinado e crie um novo arquivo. Depois de uma mudança signingConfig> lançamento em build.gradle (acima)
SergioLucas

6

Se você tem o Android Studio , é muito, muito simples. Basta criar um MapActivity usando o Android Studio e depois de criá-lo, vá para google_maps_api.xml. Lá haverá um link fornecido nos comentários. Se você colá-lo no seu navegador, ele solicitará alguns detalhes a serem preenchidos e, depois disso, sua API será gerada. Não há necessidade de usar o keytool e tudo.

Captura de tela:

Digite a descrição da imagem aqui


Mas isso funcionará apenas para depuração. Você precisa determinar manualmente a impressão digital da chave de liberação.
Hyndrix

@ Hyndrix, como você determina manualmente a impressão digital da chave de liberação?
Micro

Este é um passo totalmente desnecessário. Não há necessidade de criar um MapActivity apenas para isso. Você só precisa procurar no Gradle Projects> app> Tasks> android> signatureReports e ver o resultado no Gradle Console em SHA1.
Kebman 19/03

5

Isso funcionou no meu caso: Use % USERPROFILE% em vez de fornecer o arquivo .keystore do caminho armazenado neste caminho automaticamente C: Usuários / nome do usuário / .android :

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

5

Use o comando simples:

keytool -exportcert -keystore caminho para depuração-ou-produção-keystore -list -v

e você receberá a chave SHA1.


4

Para o Windows 10 , no terminal Android Studio :

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

Nota: Para o debug.keystore, a senha é "android". O keystore de depuração geralmente está localizado em "%USER_PROFILE%"/.android/debug.keystore.


4

Quero acrescentar uma coisa com a resposta dada pelo Softcoder . Eu vi algumas pessoas que não conseguiam dar o caminho debug.keystore corretamente no command line. Eles veem que estão fazendo o processo exato aceito acima, mas não está funcionando. Nesse ponto, tente arrastar o debug.keystore e solte-o na linha de comando. Ajudará se a resposta aceita não estiver funcionando para você. Faça o processo completo sem qualquer hesitação. Foi uma boa resposta.


4

Encontrei um processo muito fácil de encontrar sua impressão digital MD5, SHA-1 usando o Android Studio.

  1. Execute seu projeto
  2. Vá para o menu Gradle (Menu: Exibir -> Janelas de ferramentas -> Gradle)
  3. Vá para 'signatureReport' na janela Gradle. (Seu projeto -> Tarefas -> android -> signatureReport)
  4. Executá-lo. (Usando um clique duplo ou Ctrl + Shift + F10)
  5. Na janela Executar, você encontrará todas as informações.

É trabalho apenas para o modo de depuração. No modo realease não consigo ver sha-1. Aqui resulta degradlew 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
----------

Portanto, devo usar o keytool para obter o sha-1. Aqui, documento oficial do Firebase:

Get_sha-1_para_release


3

Clique no ícone Gradle no painel direito e clique em (raiz).

Tarefas> android> signatureReport

Em seguida, o script Gradle será executado e você verá suas chaves.


3

Simples, chame esses métodos na tela inicial: hash () e getCertificateSHA1Fingerprint () e, em seguida, as chaves ficariam visíveis no log

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

Obrigado.


2

Use as instruções do API Manager usando keytool:

Obtenha o nome do pacote no seu arquivo AndroidManifest.xml. Em seguida, use o seguinte comando para obter a impressão digital:

keytool -list -v -keystore mystore.keystore


1

Você pode usar o seguinte comando e alterar AJAY SUNDRIYAL com o nome do sistema. Isso é apenas para o seu debug.keystore. Isso funcionará para você.

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

1

Isso funcionou para mim:

keytool -exportcert -alias androiddebugkey -keystore

Coloque o caminho para o keystore para depuração ou produção aqui, como C: \ users \ youruser.android \ debug.keystore -list -v

Verifique se você já está no Java\jdk*\bindiretório em uma janela de comando ou terminal.

Em seguida, use o Android como a senha.

Às vezes, os recursos da web podem ser enganosos. Estes são os que trabalham:


1

O caminho do keystore está entre aspas duplas. Está funcionando bem.

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


1

Ao criar um novo "Projeto do Google Maps", no Android Studio V 1.5.1, a última tela abre o google_maps_api.xmlarquivo e exibe a tela com as instruções a seguir:

Recursos:

TODO: antes de executar seu aplicativo, você precisa de uma chave da API do Google Maps.

Para obter um, siga este link, siga as instruções e pressione "Criar" no final:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r= SEU SHA-1 + SEU NOME DE PACOTE

Você também pode adicionar suas credenciais a uma chave existente, usando esta linha:
SEU SHA-1: SEU NOME DO PACOTE

Como alternativa, siga as instruções aqui:
https://developers.google.com/maps/documentation/android/start#get-key

Depois de ter sua chave (que começa com "AIza"), substitua a string "google_maps_key" neste arquivo.
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR GOOGLE MAPS KEY</string>

Para obter a CHAVE DO GOOGLE MAPS, basta recortar e colar o link do URL fornecido no navegador e siga as instruções acima no momento da criação do novo aplicativo. O SHA-1e Package namesjá estão no link fornecido, assim você não precisa conhecê-los. No entanto, eles estarão no seu projeto no resources>Values>google_maps_api.xmlarquivo que é concluído quando você segue as instruções para criar o projeto.


1
  • Vá para Arquivo> Selecionar estrutura do projeto appou mobileo nome que você deuModules

  • Escolha a Signingaba

  • Você pode adicionar um certificado clicando no +botão


Você poderia, por favor, me mostrar detalhes, dando algum exemplo?
Setu Kumar Basak

0

A maneira mais fácil de obter a impressão digital é alternar do aplicativo para o relatório assinado clicando no menu suspenso e clique em criar.

insira a descrição da imagem aqui

Você poderá ver a impressão digital sha1 no painel inferior, onde verá o relatório de depuração e o rastreamento de pilha. Lembre-se de voltar ao aplicativo quando desejar executá-lo em um dispositivo ou emulador.


Este poderia ser um ponto interessante, mas não entendi o que você quer dizer, por favor.
nyxee
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.