Comment puis-je créer un magasin de clés?

538

Quelles sont les étapes pour créer un magasin de clés pour Android?

Je dois utiliser Google Maps dans mon application et je ne sais pas quelles étapes j'ai manquées. Veuillez me fournir les étapes détaillées spécifiques (je ne les ai pas comprises dans les guides).

user482762
la source
Avez-vous déjà fait quelque chose ou cherchez-vous des recommandations pour commencer?
ATK
2
Ce sont les étapes suivantes que j'avais faites: 1-installer eclipse 2- installer jdk 3- installer sdk 4- installer le plugin android. je n'ai pas réussi à exécuter la commande dans win cmd, la commande: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (qui génère une clé privée). merci
user482762
@ user482762: la réponse de CommonsWare at-elle fonctionné pour vous? Pourquoi n'avez-vous pas réussi à exécuter la cmd de victoire?
ATK
La réponse de CommonsWare ne fonctionne pas pour moi, lorsque j'essaie d'exécuter les commandes dans le cmd, j'obtiens un massage d'erreur: "$ n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes". merci pour votre aide
user482762
Ah! Vous ne voulez pas vraiment taper le $. Sous Windows, lorsque vous utilisez la ligne de commande (l'application cmd), l'invite de saisie ressemble généralement à DRIVE: / DIRECTORY>, comme "c: \". Sous Unix, l'invite ressemble souvent à "$" ou simplement ">". Le "$" dans la commande est censé représenter l'invite de saisie, ne fait pas partie de la commande. Essayez d'exécuter keytool avec tous les arguments, sans $.
ATK

Réponses:

545

Pour répondre à la question dans le titre, vous créez un fichier de clés avec l'utilitaire Java Keytool fourni avec n'importe quelle distribution JDK standard et qui peut être localisé à %JAVA_HOME%\bin. Sous Windows, ce serait généralementC:\Program Files\Java\jre7\bin .

Donc, sous Windows, ouvrez une fenêtre de commande et basculez vers ce répertoire et entrez une commande comme celle-ci

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

Keytool vous invite à fournir des mots de passe pour le magasin de clés, à fournir les champs Nom distinctif, puis le mot de passe pour votre clé. Il génère ensuite le fichier de clés sous forme de fichier appelé my-release-key.keystore dans le répertoire dans lequel vous vous trouvez. Le fichier de clés et la clé sont protégés par les mots de passe que vous avez entrés. Le magasin de clés contient une seule clé, valide pour 10000 jours. L'alias est un nom que vous utiliserez plus tard pour faire référence à ce fichier de clés lors de la signature de votre application.

Pour plus d'informations sur Keytool, consultez la documentation à l' adresse : http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

et pour plus d'informations sur la signature des applications Android, rendez-vous ici: http://developer.android.com/tools/publishing/app-signing.html

georgiecasey
la source
6
Bon cri sur la définition de -keysize 2048 plutôt que par défaut 1024 personnellement j'utilise maintenant 4096
scottyab
9
pour plus d'informations, dans mon cas, je dois ouvrir la fenêtre de commande avec les droits d'administrateur
Intuitisoft
Cela me donne: E / TokenRequestor: vous avez une mauvaise configuration liée à OAuth2, veuillez vérifier. Erreur détaillée: UNREGISTERED_ON_API_CONSOLE J'ai déjà créé un identifiant en entrant mon SHA1 dans la console API.
Rohan Taneja
Lien direct vers la documentation sur la génération manuelle du magasin de
clés
Je l' ai utilisé cette commande qui fixe les 2 mots de passe afin que vous sauter quelques - uns des messages: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Ensuite, pour générer le SHA-1 que vous devez mettre dans Firebase, faites:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo
158

Signature de votre application dans Android Studio

Pour signer votre application en mode édition dans Android Studio, procédez comme suit:

1- Dans la barre de menus, cliquez sur Build> Generate Signed APK.


2-Dans la fenêtre de l'assistant Générer un fichier APK signé, cliquez sur Créer nouveau pour créer un nouveau fichier de clés. Si vous disposez déjà d'un magasin de clés, passez à l'étape 4.


3- Dans la fenêtre Nouveau magasin de clés, fournissez les informations requises comme indiqué dans la figure Votre clé doit être valide pendant au moins 25 ans, afin que vous puissiez signer les mises à jour de l'application avec la même clé tout au long de la durée de vie de votre application.

entrez la description de l'image ici

4- Dans la fenêtre de l'assistant Générer un fichier APK signé, sélectionnez un fichier de clés, une clé privée et entrez les mots de passe pour les deux. Cliquez ensuite sur Suivant.entrez la description de l'image ici

5- Dans la fenêtre suivante, sélectionnez une destination pour l'APK signé et cliquez sur Terminer. entrez la description de l'image ici

référence

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

android_developer
la source
2
Bien que cette réponse soit correcte, elle n'est pratique que si vous avez déjà installé Android Studio.
Seph Reed
98

J'étais fou de chercher comment générer un .keystore en utilisant dans le shell une commande sur une seule ligne , afin de pouvoir l'exécuter à partir d'une autre application. Ceci est le chemin:

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 est un identifiant unique pour l'application dans le .keystore

    • cn le nom complet de la personne ou de l'organisation qui génère le .keystore
    • ou l' unité organisationnelle qui crée le projet, c'est une subdivision de l'organisation qui le crée. Ex. android.google.com
    • o Organisation propriétaire de l'ensemble du projet. Sa portée supérieure à UO . Ex.: Google.com
    • c Le code de fonction du pays. Ex: pour les États-Unis, c'est "US"
  • alias Identifiant de l'application en tant qu'entité unique à l'intérieur du .keystore (il peut en avoir plusieurs)

  • Keypass mot de passe pour protéger cet alias spécifique.
  • keystore chemin où le .keystore fichier est créé (l'extension standard est en fait .ks)
  • storepass Mot de passe pour protéger l'ensemble du contenu du .keystore .
  • validité En jours, l'application sera valide avec ce .keystore

Cela a très bien fonctionné pour moi, il ne demande rien d'autre dans la console, crée simplement le fichier. Pour plus d'informations, voir keytool - Outil de gestion des clés et des certificats .

EliuX
la source
Je n'ai jamais eu ce genre d'erreur, mais essayez de toucher /path/file.keystoreet de pointer cela avec le paramètre storepass.
EliuX
fonctionne très bien! mon seul changement est que j'utilise l'extension .jks pour Android
Adam Mendoza
2
jksest l' extension de magasin de clés officielle pour java en général, mais keystoreest celle recommandée pour les applications Android .
EliuX
1
@eliasbagley c'est parce que la commande -storepass comme écrit ci-dessus a commencé sur une autre ligne. Écrivez tout sur une seule ligne et tout ira bien.
tormuto
82

Créez un fichier de clés à partir de la ligne de commande:

  1. Ouvrir la ligne de commande:

    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. Entrez> Il vous demandera un mot de passe> entrez le mot de passe (il sera invisible)

    Enter keystore password:
    Re-enter new password:
  3. Entrez> Il vous demandera vos détails.

    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. Entrée> Entrée Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Entrez> Saisissez à nouveau le mot de passe.

    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:

[Stockage de C: /index.keystore]

  1. Et vous êtes fait !!!

Exporter dans Eclipse:

Exportez votre package Android vers .apk avec votre fichier de clés créé

  1. Faites un clic droit sur le package que vous souhaitez exporter et sélectionnez exporter entrez la description de l'image ici

  2. Sélectionnez Exporter l'application Android> Suivant entrez la description de l'image ici

  3. Prochain
    entrez la description de l'image ici

  4. Sélectionnez Utiliser le magasin de clés existant> Parcourir le fichier .keystore> entrez le mot de passe> Suivant entrez la description de l'image ici

  5. Sélectionnez Alias> entrez le mot de passe> Suivant entrez la description de l'image ici

  6. Parcourir la destination APK> Terminer entrez la description de l'image ici

Dans Android Studio:

Créer un magasin [.keystore/.jks]de clés en studio ...

  1. Cliquez sur Build (ALT + B) > Generate Signed APK ...
    entrez la description de l'image ici

  2. Cliquez sur Créer nouveau. (ALT + C)
    entrez la description de l'image ici

  3. Parcourir le chemin du magasin de clés (MAJ + ENTRÉE)> Sélectionner le chemin> Entrer le nom> OK entrez la description de l'image ici

  4. Remplissez les détails de votre .jks/keystoredossier entrez la description de l'image ici

  5. Prochain
    entrez la description de l'image ici

  6. Votre dossier
    entrez la description de l'image ici

  7. Saisissez le mot de passe principal de Studio (vous pouvez réinitialiser si vous ne le savez pas) > OK entrez la description de l'image ici

  8. Sélectionnez * Dossier de destination *> Type de build

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

    Cliquez sur Terminer

    entrez la description de l'image ici

Terminé !!!

Iamat8
la source
28

Ce tutoriel:

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

m'a été très utile la première fois que j'ai dû créer un magasin de clés. C'est simple mais les instructions sur developer.android.com sont un peu trop brèves.

La partie sur laquelle je ne savais pas était où enregistrer et quel nom donner au fichier de clés .

Il semble que peu importe où vous le mettez, assurez-vous de le garder en sécurité et de conserver un certain nombre de sauvegardes. Je viens de le mettre dans mon répertoire d'application

Nommez le fichier "something.keystore" où quelque chose peut être ce que vous voulez. J'ai utilisé app_name.keystore , où app_name était le nom de mon application.

La partie suivante était de savoir comment nommer l'alias. Encore une fois, cela ne semble pas avoir d'importance, donc je viens d'utiliser à nouveau l' app_name . Gardez les mots de passe identiques à ceux utilisés auparavant. Remplissez le reste des champs et vous avez terminé.

oiseau
la source
13

J'ai suivi ce guide pour créer le magasin de clés de débogage.

La commande est:

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

Utilisez cette commande pour créer 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
la source
5

La première chose à savoir est de savoir si vous êtes en mode Debug ou Release. Depuis le site du développeur "Il existe deux modes de génération: le mode débogage et le mode version. Vous utilisez le mode débogage lorsque vous développez et testez votre application. Vous utilisez le mode version lorsque vous souhaitez créer une version de version de votre application que vous pouvez distribuer directement aux utilisateurs ou publier sur un marché d'applications tel que Google Play. "

Si vous êtes en mode débogage, procédez comme suit ...
A. Ouvrez le terminal et tapez:

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

Remarque: Pour Eclipse, le magasin de clés de débogage se trouve généralement dans ~ / .android / debug.keystore ...

B. lorsque vous êtes invité à entrer un mot de passe, entrez simplement "android" ...

C.Si vous êtes en mode Release, suivez les instructions sur ...

http://developer.android.com/tools/publishing/app-signing.html <- ce lien explique à peu près tout ce que vous devez savoir.

Montre de l'amour
la source
2

Vous pouvez créer votre fichier de clés en exportant un fichier APK signé. Lorsque vous essayez d'exporter / de créer un fichier APK signé, il vous demandera un fichier de clés.

Vous pouvez choisir votre magasin de clés existant ou vous pouvez facilement en créer un nouveau en cliquant sur créer un nouveau magasin de clés

Voici un lien très utile et bien expliqué sur la façon de créer votre keystore et de générer un APK signé

Ce lien a expliqué comment le faire avec Android Studio, mais si je me souviens, c'est assez similaire sur Eclipse

FAIS ATTENTION

Une fois que vous avez généré votre fichier de clés, conservez-le dans un endroit sûr car vous en aurez besoin pour régénérer un nouveau fichier APK signé.

Comment exporter un projet dans le studio Android?

Hugo
la source
2

Je voudrais suggérer une méthode automatique avec gradle uniquement

** Définissez également au moins un paramètre supplémentaire pour le magasin de clés dans la dernière commande, par exemple le pays '-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
}

Cela générera un fichier de clés lors de la synchronisation et de la construction du projet

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

Si vous ne voulez pas ou ne pouvez pas utiliser Android Studio, vous pouvez utiliser l'outil NPM create-android-keystore:

$ create-android-keystore quick

Ce qui se traduit par un magasin de clés nouvellement généré dans le répertoire courant.

Plus d'informations: https://www.npmjs.com/package/create-android-keystore

Kaspi
la source