Android Studio - debug keystore


107

O Android Studio assina compilações de depuração? Em caso afirmativo, onde está o armazenamento de chaves que ele usa para fazer isso?


1
Ele assina de qualquer maneira porque apenas compilações assinadas podem ser instaladas.
Alexander Kulyakhtin

3
Eu acho que esta é uma questão de programação válida. Ele está diretamente relacionado ao conjunto de ferramentas usado no desenvolvimento de aplicativos Android.
Austyn Mahoney


@Prachi como isso pode ser uma duplicata de uma pergunta feita mais de 3 anos depois? Talvez seja o outro uma duplicata deste.
fasteque de

Respostas:


179

Está no mesmo local: ~/.android/debug.keystore


5
Não está em ~ / .android em vez disso?
Eugene Mymrin

14
keytool -list -v -keystore ~ ​​/ .android / debug.keystore
jturolla

5
Esta é a versão do Windows do comando keytool: keytool -exportcert -alias androiddebugkey -keystore C: \ Usuários \ <User> \ .android \ debug.keystore -list -v
Simon

12
A senha padrão é "android" e o alias da chave é "androiddebugkey".
naXa de

1
E a senha padrão para androiddebugkey também é "android".
kibitzerCZ

64

Se você usa Windows, provavelmente o local é assim:

C: \ User \ YourUser \ .android \ debug.keystore


30

Você pode especificar seu próprio keystore de depuração, se desejar. Essa solução também oferece a capacidade de armazenar suas chaves fora do diretório do projeto, bem como aproveitar a automação no processo de assinatura. Sim, você pode acessar File -> Project Structuree atribuir keystores e senhas de assinatura na Signingguia, mas isso colocará entradas de texto simples em seu arquivo gradle.build, o que significa que seus segredos podem ser divulgados (especialmente em commits de repositório). Com esta solução, você obtém o controle de usar seu próprio armazenamento de chaves e a mágica da automação durante compilações de depuração e liberação.

1) Crie um gradle.properties (se ainda não tiver um).

A localização deste arquivo depende do seu sistema operacional:

   /home/<username>/.gradle/ (Linux)
   /Users/<username>/.gradle/ (Mac)
   C:\Users\<username>\.gradle (Windows)

2) Adicione uma entrada apontando para o yourprojectname.propertiesarquivo. (exemplo para Windows)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties

3) Crie o yourprojectname.propertiesarquivo no local especificado na Etapa 2 com as seguintes informações:

keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password

4) Modifique seu gradle.buildarquivo para apontar para yourprojectname.propertiesarquivo para usar as variáveis.

if(project.hasProperty("yourprojectname.properties")
        && new File(project.property("yourprojectname.properties")).exists()) {

    Properties props = new Properties()
    props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))

    android {
        signingConfigs {
            release {
                keyAlias 'release'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
            debug {
                keyAlias 'debug'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
        }
        compileSdkVersion 19
        buildToolsVersion "20.0.0"
        defaultConfig {
            applicationId "your.project.app"
            minSdkVersion 16
            targetSdkVersion 17
        }
        buildTypes {
            release {
            }
        }
    }

}

dependencies {
    ...
}

5) Aproveite! Agora todas as suas chaves estarão fora da raiz do diretório e ainda assim você terá as alegrias da automação para cada construção.

Se você receber um erro em seu arquivo gradle.build sobre a variável "props", é porque você não está executando o bloco "android {}" dentro da primeira ifcondição em que a propsvariável é atribuída, então apenas mova todo o android {... } seção na condição em que a variável props é atribuída e tente novamente.

Eu juntei essas etapas com as informações encontradas aqui e aqui .


1
Em relação a "2) Adicionar uma entrada ...". Adicionar uma entrada para onde?
VikingGlen

adoro a ideia de automação de compilação
Khurram Shehzad

Obrigado, esta é uma ótima maneira de manter as senhas de produção fora do controle de origem (para que não estejam disponíveis para todos os desenvolvedores)!
simulação de

15

O caminho do arquivo debug.keystore do Android Studio depende da variável de ambiente ANDROID_SDK_HOME.

Se ANDROID_SDK_HOME definido, o arquivo é colocado na subpasta do SDK chamada .android .
Quando não definido, o armazenamento de chaves é colocado no caminho inicial do usuário na mesma subpasta:
- % HOMEPATH% \. Android \ no Windows
- $ HOME / .android / no Linux


1
Você poderia elaborar mais sua resposta adicionando um pouco mais de descrição sobre a solução que você fornece?
abarisone de

por que 87 pessoas pensam que está em ~ / .android / debug.keystore, todos eles não têm uma variável de ambiente chamada "ANDROID_SDK_HOME" ???
IloveIniesta,

Isso foi muito útil. Muito obrigado
Rahul

4

Veja como eu finalmente criei o arquivo ~ / .android / debug.keystore.

Primeiro, algumas informações básicas. Eu tenho um novo laptop de viagem. Android Studio instalado. Clonou meu projeto android do hub git. O projeto não funcionou. Finalmente descobri que o debug.keystore não foi criado ... e não consegui descobrir como fazer o Android Studio criá-lo.

Finalmente, criei um novo projeto em branco ... e isso criou o debug.keystore!

Espero que isso ajude outras pessoas que tenham esse problema.


1

No Mac, você o encontrará aqui: /Users/$username/.android


1

Se você usa o Windows, verá que segue o seguinte: Arquivo -> Estrutura do projeto -> Facetas

escolha seu projeto Android e na janela "Facet 'Android'" clique em TAB "Embalagem", você encontrará o que deseja


2
Não existe um menu como "Facetas"
IgorGanapolsky
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.