En correspondance avec Cordova news la version 5.0.0 est prête. J'ai essayé de mettre à jour tous mes projets Android comme d'habitude.
Pour mettre à jour le framework Cordova lui-même:
npm update -g cordova
Pour mettre à jour la bibliothèque dans le projet Android:
cordova platform update Android
Après avoir construit la nouvelle version en utilisant l’option "--release":
cordova build Android --release
Je n'ai que la version non signée. Étrange...
Alors, comment est-il possible de réutiliser le magasin de clés existant (précédemment généré par keytool et utilisé par Cordova 4.0.0) pour obtenir un APK signé?
Il semble que Cordova 5.0.0 utilise le système d’automatisation de la construction Gradle au lieu de Ant. Par conséquent, les paramètres d'origine du fichier de clés définis dans le fichier "/platforms/Android/ant.properties" ne seront pas utilisés lors de la construction. Nous aurons donc un fichier APK non signé en conséquence.
Pour résoudre ce problème, nous devons dire à Gradle d'utiliser également le magasin de clés existant. L'enquête sur build.gradle nous fournit des informations utiles dont nous avons besoin pour fournir des signatures de signature.
Mais c’est une mauvaise idée de le faire dans ce fichier car il est étiqueté comme généré automatiquement et il devrait être exempt de toute édition.
Alors finalement j'ai trouvé le moyen de le résoudre. L'objet "signatureConfigs" sera construit à partir d'un fichier avec le nom de fichier stocké dans cdvReleaseSigningPropertiesFile. En correspondance avec la documentation, la valeur par défaut de cette variable est "release-signing.properties _". Il suffit donc de créer un nouveau fichier avec ce nom dans le même dossier que le fichier "build.gradle" et de le placer dans le contenu suivant:
storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
Le chemin dans l'exemple est spécifié pour le magasin de clés enregistré dans le répertoire racine du projet. Il a le style de Windows ... Dans le cas de Linux, vous devrez utiliser des barres obliques simples (et non des barres obliques inverses comme dans l'exemple ci-dessus).
De plus, vous pouvez définir votre propre chemin pour la signature du fichier de paramètres . Pour en savoir plus à ce sujet, consultez la version Edge de cordova documentation .
Selon documentation officielle (v5.1.1 +), je viens d’ajouter un build.json
{
"Android": {
"release": {
"keystore": "Android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
et mon fichier Android.keystore existant dans le dossier racine Cordova.
cordova build Android --release
fera l'affaire, aucun crochet n'est nécessaire, le fichier apk singned peut alors être trouvé dans ./platform/Android/build/outputs/apk comme Android-release.apk .
Pour Cordova 5.1.1+, reportez-vous à Ronny Elflein r11lein answer https://stackoverflow.com/a/30980293/2163398
La réponse actuelle est bonne (par @maxim), mais nous voulons garder le dossier spécifique à la plate-forme intact, afin de pouvoir le conserver en dehors du contrôle de version. J'ai donc créé ce crochet pour copier automatiquement le fichier "release-signing.properties" dans le dossier Android.
Alors, commencez par placer votre magasin de clés dans la racine de votre projet. Créez ensuite le "release-signing.properties" dans le dossier config, à la racine de votre projet cordova. Contenu (le chemin storeFile dans l'exemple est spécifié pour le fichier de clés enregistré dans le répertoire racine du projet. Il a le style Windows ... Dans le cas de Linux, vous devrez utiliser des barres obliques simples):
storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
Ajoutez ensuite, s’il n’existe pas, le dossier "after_prepare" dans le dossier "hooks" et créez-y un fichier appelé "copy_assets.js" .Contents:
#!/usr/bin/env node
// Files to be copied, with source and destination
var ncp = require('ncp').ncp,
transfers = [
{
'source': './config/Android/release-signing.properties',
'destination': './platforms/Android/release-signing.properties'
}
];
ncp.limit = 16;
transfers.forEach(function(transfer) {
ncp(transfer.source, transfer.destination, function (err) {
if (err) {
return console.error(err);
}
console.log('====== Assets moved from ' + transfer.source + ' to ' + transfer.destination + ' ======');
});
});
Si vous ne possédez pas de ncp dans votre projet, ouvrez une commande de commande dans la racine du dossier de projet et exécutez-la (vous pouvez éventuellement créer un fichier packages.json à la racine de votre projet):
npm install ncp
Ensuite, vous pouvez exécuter:
cordova build Android --release
Pour automatiser le processus de version, vous devez créer "build.json" dans le dossier de votre projet et inclure le contenu suivant:
{
"Android": {
"release": {
"keystore": "Android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
Le keytore est généré en utilisant
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Si vous avez déjà un fichier de magasin de clés, exécutez la commande ci-dessous pour connaître le contenu requis.
keytool -list -keystore .keystore
Ensuite, il suffit de courir
cordova build Android --release
Étapes - 1) Générer un certificat de magasin de clés
Syntax - keytool -genkey -v -keystore C:\DIR\APPNAME.keystore -alias APPNAME -keyalg RSA -keysize 2048 -validity 10000
3) Spécifiez la configuration de signature pour Gradle Créer un fichier de propriétés de fichier - release-signing.properties (nom de fichier) Écrivez les clés et les valeurs ci-dessous
Syntaxe
storeFile=..\\..\\some-keystore.keystore
storeType=jks (pkcs12 for p12,jks for keystore)
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
Exemple
storeFile= abc.keystore
storePassword=mypass
storeType=jks
keyAlias=abc
keyPassword=mypass
cordova construire Android - libération
cordova run Android - release
plates-formes\Android\build\sorties\apk
Dans la dernière version de Gradle, il est également possible de créer un fichier nommé "release-signing.properties" dans le dossier "\ plateformes\Android \". Le contenu devrait être:
storeFile=<your key>.keystore
storeType=jks
keyAlias=<your_alias>
keyPassword=<your_passwd>
storePassword=<your_passwd>
Le fichier ".keystore" devrait se trouver dans le même dossier.