Android Studio signe-t-il les builds de débogage ? Si oui, où se trouve le keystore qu'il utilise pour le faire ?
Réponses
Trop de publicités?Vous pouvez spécifier votre propre keystore de débogage si vous le souhaitez. Cette solution vous permet également de stocker vos clés en dehors du répertoire du projet et d'automatiser le processus de signature. Oui, vous pouvez aller à File -> Project Structure
et d'attribuer des trousseaux de clés et des mots de passe de signature dans le fichier Signing
mais cela mettra des entrées en clair dans votre fichier gradle.build, ce qui signifie que vos secrets peuvent être divulgués (en particulier dans les commits du dépôt). Avec cette solution, vous avez le contrôle de l'utilisation de votre propre keystore et la magie de l'automatisation pendant les builds de débogage et de mise en production.
1) Créez un gradle.properties (si vous n'en avez pas déjà un).
L'emplacement de ce fichier dépend de votre système d'exploitation :
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
2) Ajouter une entrée pointant vers yourprojectname.properties
fichier. (exemple pour Windows)
yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
3) Créer yourprojectname.properties
à l'emplacement indiqué à l'étape 2 avec les informations suivantes :
keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password
4) Modifiez votre gradle.build
pour pointer vers le fichier yourprojectname.properties
pour utiliser les variables.
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) Profitez-en ! Maintenant, toutes vos clés seront en dehors de la racine du répertoire et vous aurez toujours les joies de l'automatisation pour chaque construction.
Si vous obtenez une erreur dans votre fichier gradle.build à propos de la variable "props", c'est parce que vous n'exécutez pas le bloc "Android {}" à l'intérieur du tout premier fichier if
condition dans laquelle le props
est assignée, il suffit donc de déplacer toute la section Android{ ... } dans la condition dans laquelle la variable props est assignée, puis réessayez.
J'ai reconstitué les étapes suivantes à partir des informations trouvées aquí y aquí .
Le chemin du fichier debug.keystore d'Android Studio dépend de la variable d'environnement ANDROID_SDK_HOME.
Si ANDROID_SDK_HOME est défini, le fichier est placé dans le sous-dossier du SDK nommé .Android .
Si elle n'est pas définie, la base de données est placée dans le chemin d'accès de l'utilisateur, dans le même sous-dossier :
- %HOMEPATH% \.android\ sur Windows
- $HOME/.Android/ sur Linux
Voici comment j'ai finalement créé le fichier ~/.Android/debug.keystore.
Tout d'abord, un peu d'histoire. J'ai acheté un nouvel ordinateur portable de voyage. J'ai installé Android Studio. J'ai cloné mon projet Android depuis le hub git. Le projet ne s'exécutait pas. J'ai finalement compris que le keystore debug.keystore n'avait pas été créé ... et je n'arrivais pas à comprendre comment Android Studio pouvait le créer.
Enfin, j'ai créé un nouveau projet vierge ... et cela a créé le keystore debug.keystore !
J'espère que cela aidera d'autres personnes qui ont ce problème.
- Réponses précédentes
- Plus de réponses