Como posso criar um keystore?

538

Quais são as etapas para criar um keystore para android?

Preciso usar o google maps no meu aplicativo e não sei quais etapas perdi. Forneça-me as etapas detalhadas específicas (não as compreendi nos guias).

user482762
fonte
Você já fez alguma coisa ou está procurando recomendações para começar?
Atk 22/10
2
Essas são as etapas a seguir: 1-install eclipse 2-install jdk 3-install sdk 4-install android plugin. Eu não consegui executar o comando no win cmd, o comando: $ keytools -genkey -v -keystore minha-release-key.keystore -alias alias_name -keyalg RSA -keyize 2048 -validity 10000 (que gera uma chave privada). graças
user482762
@ user482762: a resposta do CommonsWare funcionou para você? Por que você não conseguiu executar o cmd da vitória?
Atk 29/10
A resposta do CommonsWare não funciona para mim. Quando tento executar os comandos no cmd, recebo uma massagem de erro: "$ não é reconhecido como um comando interno ou externo, programa operacional ou arquivo em lotes". obrigado pela sua ajuda
user482762
Ah! Você não quer realmente digitar $. No Windows, quando você usa a linha de comando (o aplicativo cmd), o prompt de entrada geralmente se parece com DRIVE: / DIRECTORY>, como "c: \". No unix, o prompt geralmente se parece com "$" ou apenas ">". O "$" no comando deve representar o prompt de entrada, não parte do comando. Tente executar o keytool com todos os argumentos, sem o $.
Atk 29/10

Respostas:

545

Para responder à pergunta no título, crie um keystore com o utilitário Java Keytool que vem com qualquer distribuição JDK padrão e pode ser localizado em %JAVA_HOME%\bin. No Windows, isso normalmente seria C:\Program Files\Java\jre7\bin.

Portanto, no Windows, abra uma janela de comando e alterne para esse diretório e insira um comando como este

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

A Keytool solicita que você forneça senhas para o keystore, forneça os campos Nome Distinto e, em seguida, a senha da sua chave. Em seguida, gera o keystore como um arquivo chamado my-release-key.keystore no diretório em que você está. O keystore e a chave são protegidos pelas senhas que você digitou. O keystore contém uma única chave, válida por 10.000 dias. O alias é um nome que você + usará mais tarde, para se referir a este keystore ao assinar seu aplicativo.

Para obter mais informações sobre o Keytool, consulte a documentação em: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

e para obter mais informações sobre como assinar aplicativos Android, acesse: http://developer.android.com/tools/publishing/app-signing.html

georgiecasey
fonte
6
Boa mensagem na definição -keysize 2048, em vez de padrão 1,024 pessoalmente Agora estou usando 4096
scottyab
9
para informação, no meu caso, eu preciso abrir a janela de comando com direitos de administrador
Intuitisoft
Isso me dá: E / TokenRequestor: Você tem configurações incorretas relacionadas ao OAuth2, verifique. Erro detalhado: UNREGISTERED_ON_API_CONSOLE Eu já criei uma credencial inserindo meu SHA1 no console da API.
Rohan Taneja
Link direto para a documentação sobre a geração manual de keystore: developer.android.com/studio/publish/…
methodsignature
Eu usei esse comando que define os 2 senhas para que você ignorar alguns dos prompts: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Em seguida, para gerar o SHA-1 que você precisa colocar em Firebase fazer:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo
158

Assinando seu aplicativo no Android Studio

Para assinar seu aplicativo no modo de versão no Android Studio, siga estas etapas:

1- Na barra de menus, clique em Criar> Gerar APK assinado.


2-Na janela Assistente para Gerar APK assinado, clique em Criar novo para criar um novo keystore. Se você já possui um keystore, vá para a etapa 4.


3- Na janela New Key Store, forneça as informações necessárias, conforme mostrado na figura Sua chave deve ser válida por pelo menos 25 anos, para que você possa assinar atualizações de aplicativos com a mesma chave durante toda a vida útil do seu aplicativo.

insira a descrição da imagem aqui

4- Na janela Assistente para Gerar APK Assinado, selecione um keystore, uma chave privada e insira as senhas para ambos. Depois clique em Next.insira a descrição da imagem aqui

5- Na próxima janela, selecione um destino para o APK assinado e clique em Concluir. insira a descrição da imagem aqui

referência

http://developer.android.com/tools/publishing/app-signing.html

android_developer
fonte
2
Embora essa resposta esteja correta, é conveniente apenas se você já tiver o Android Studio instalado.
Seph Reed
98

Eu estava louco procurando como gerar um .keystore usando no shell um comando de linha única , para poder executá-lo em outro aplicativo. Este é o caminho:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname é um identificador exclusivo para o aplicativo no .keystore

    • cn o nome completo da pessoa ou organização que gera o .keystore
    • ou Unidade Organizacional que cria o projeto, é uma subdivisão da Organização que o cria. Ex. android.google.com
    • o Proprietário da organização de todo o projeto. É um escopo maior do que OU . Ex .: google.com
    • c O código abreviado do país. Ex: Para os Estados Unidos é "EUA"
  • alias Identificador do aplicativo como uma entidade única dentro do .keystore (ele pode ter muitos)

  • keypass senha para proteger esse alias específico.
  • keystore Caminho em que o arquivo .keystore deve ser criado (a extensão padrão é realmente .ks)
  • storepass Senha para proteger todo o conteúdo .keystore .
  • validade Em alguns dias, o aplicativo será válido com este .keystore

Funcionou muito bem para mim, não pede mais nada no console, apenas cria o arquivo. Para obter mais informações, consulte keytool - Ferramenta de gerenciamento de chaves e certificados .

EliuX
fonte
Eu nunca tive esse tipo de erro, mas tente tocar /path/file.keystoree apontar isso com o parâmetro storepass.
EliuX 5/05
funciona bem! minha única mudança é que eu uso os .jks de extensão para Android
Adam Mendoza
2
jksé a extensão oficial do keystore para java em geral, mas keystoreé a recomendada para uso em aplicativos Android .
EliuX 26/09/16
1
@eliasbagley, porque o comando -storepass, conforme escrito acima, começou em outra linha. Escreva tudo em uma única linha e tudo ficará bem.
Tormuto 16/05/19
82

Crie o arquivo keystore a partir da linha de comandos:

  1. Abrir linha de comando:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
    
  2. Digite> Ele solicitará a senha> digite a senha (será invisível)

    Enter keystore password:
    Re-enter new password:
    
  3. Digite> Ele perguntará seus detalhes.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
    
  4. Digite> Digite Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
    
  5. Digite> Digite a senha novamente.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:
    

[Armazenando C: /index.keystore]

  1. E você está FEITO !!!

Exportar no Eclipse:

Exporte o seu pacote Android para .apk com o arquivo keystore criado

  1. Clique com o botão direito do mouse no pacote que você deseja exportar e selecione exportar insira a descrição da imagem aqui

  2. Selecione Exportar aplicativo Android> Avançar insira a descrição da imagem aqui

  3. Próximo
    insira a descrição da imagem aqui

  4. Selecione Usar keystore existente> Procurar arquivo .keystore> digite a senha> Avançar insira a descrição da imagem aqui

  5. Selecione Alias> digite a senha> Avançar insira a descrição da imagem aqui

  6. Procurar APK Destino> Concluir insira a descrição da imagem aqui

No Android Studio:

Crie keystore [.keystore/.jks]no estúdio ...

  1. Clique em Compilar (ALT + B) > Gerar APK assinado ...
    insira a descrição da imagem aqui

  2. Clique em Criar novo. (ALT + C)
    insira a descrição da imagem aqui

  3. Percorrer o caminho do armazenamento de chaves (SHIFT + ENTER)> selecione Caminho> Digite o nome> OK insira a descrição da imagem aqui

  4. Preencha os detalhes do seu .jks/keystorearquivo insira a descrição da imagem aqui

  5. Próximo
    insira a descrição da imagem aqui

  6. Seu arquivo
    insira a descrição da imagem aqui

  7. Digite a senha mestra do Studio (você pode redefinir se não souber) > OK insira a descrição da imagem aqui

  8. Selecione * Pasta de destino *> Tipo de compilação

    release : for publish on app store
    debug : for debugging your application
    

    Clique em Concluir

    insira a descrição da imagem aqui

Feito !!!

Iamat8
fonte
28

Este tutorial:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

foi muito útil para mim na primeira vez em que criei um keystore. É simples, mas as instruções no developer.android.com são um pouco breves.

A parte que eu não tinha certeza era onde salvar e que nome dar ao arquivo keystore .

Parece que não importa onde você o coloca, apenas mantenha-o seguro e mantenha vários backups. Eu apenas coloquei no meu diretório de aplicativos

Nomeie o arquivo "something.keystore" onde algo pode ser o que você quiser. Eu usei app_name.keystore , em que app_name era o nome do meu aplicativo.

A próxima parte era como nomear o apelido. Mais uma vez, não parece importar, então novamente usei o app_name novamente. Mantenha as senhas iguais às usadas anteriormente. Preencha o restante dos campos e pronto.

homem Pássaro
fonte
13

Eu segui este guia para criar o keystore de depuração.

O comando é:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
Davide Pastore
fonte
11

Use este comando para criar debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
Aravin
fonte
5

A primeira coisa a saber é se você está no modo Debug ou Release. No site do desenvolvedor "Existem dois modos de compilação: modo de depuração e modo de liberação. Você usa o modo de depuração ao desenvolver e testar seu aplicativo. Você usa o modo de liberação quando deseja criar uma versão de lançamento do seu aplicativo que possa ser distribuída diretamente para usuários ou publicar em um mercado de aplicativos como o Google Play ".

Se você estiver no modo de depuração, faça o seguinte ...
A. Abra o terminal e digite:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

Nota: Para o Eclipse, o keystore de depuração geralmente está localizado em ~ / .android / debug.keystore ...

B. quando solicitado uma senha, basta digitar "android" ...

C. Se você estiver no modo Release, siga as instruções em ...

http://developer.android.com/tools/publishing/app-signing.html <- este link explica praticamente tudo o que você precisa saber.

Mostre amor
fonte
2

Você pode criar seu keystore exportando um APK assinado. Quando você tentar exportar / criar um APK assinado, ele solicitará um keystore.

Você pode escolher seu keystore existente ou criar facilmente um novo, clicando em criar novo keystore

Aqui, um link muito útil e bem explicado de como criar seu keystore e gerar um APK assinado

Este link explicou como fazer isso com o Android Studio, mas se bem me lembro, é bem parecido no Eclipse

CUIDADO

Depois de gerar seu keystore, mantenha-o em algum lugar seguro, pois será necessário gerar novamente um novo APK assinado.

Como exportar um projeto no estúdio Android?

Hugo
fonte
2

Eu gostaria de sugerir uma maneira automática apenas com gradle

** Defina também pelo menos um parâmetro adicional para keystore no último comando, por exemplo, país '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

Isso irá gerar keystore na sincronização do projeto e criar

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
Vlad
fonte
-4

Se você não quiser ou não puder usar o Android Studio, poderá usar a ferramenta NPM create-android-keystore:

$ create-android-keystore quick

O que resulta em um keystore recém-gerado no diretório atual.

Mais informações: https://www.npmjs.com/package/create-android-keystore

Kaspi
fonte