web-dev-qa-db-fra.com

Comment obliger Cordova 3.4.0 à définir le nom/code de la version Android lors de la compilation?

J'utilise actuellement Cordova 3.4.0 et l'interface de ligne de commande pour construire mon projet afin de cibler Android à l'aide de la commande suivante:

cordova build Android

OR

cordova build Android --release

Mon config.xml a spécifié ce qui suit:

<widget id="com.example.myapp" 
        version="0.0.3" 
        versionCode="2" 
        ...
        >
</widget>

Le fichier AndroidManifest.xml résultant dans myapp/plates-formes/Android n'est pas mis à jour avec la version et le code de version spécifiés dans le fichier config.xml. Il reste par défaut:

<manifest 
        Android:versionCode="1" 
        Android:versionName="1.0"
        ...
</manifest>

Est-ce un bug? Ou y a-t-il un autre moyen de spécifier le versionCode et le nom de version pour Android dans le fichier config.xml? Même peut-être, y a-t-il un crochet que je peux utiliser pour mettre à jour AndroidManifest.xml avec la version correcte avant la compilation?

Je préférerais ne pas avoir à mettre cela à jour manuellement chaque fois que je veux que ça change comme:

  1. Il est sujet aux erreurs et fastidieux
  2. Ce ne sera pas une chose évidente à changer pour les développeurs inconnus
  3. Aucun des dossiers de plate-forme n'est stocké dans le contrôle de source

Pour ces raisons, j'aimerais que les numéros de version soient définis dans le fichier config.xml. Des idées?

Merci

27
Steven Anderson

Enfin avec Cordova 3.5.0-0.2.4 j'ai ajouté cet attribut au <widget> noeud config.xml

 Android-versionCode="10"

et le AndroidManifest.xml a été correctement mis à jour pour

 Android:versionCode="10" 
56
Diogo

suite à la réponse de MichaelOryl, il y a quelque chose que j'ai implémenté avec cordova 3.4 et avec l'outil bash XMLStarlet

Fondamentalement, il copie la valeur de l'attribut versionCode de config.xml dans AndroidManifest.xml

Au lieu d'exécuter ceci: 

cordova build Android --release

run [devrait devenir un script]:

cordova prepare Android
# grab version code from config.xml
VERSION_CODE=$(xmlstarlet sel -t -v "//@versionCode" "config.xml")
# write correct version code in manifest
xmlstarlet ed -L -u "/manifest/@Android:versionCode" -v "$VERSION_CODE" "platform/Android/AndroidManifest.xml"
cordova compile Android --release

Ainsi, lors de la mise à niveau vers cordova 3.5, je peux réutiliser le logiciel habituel 'cordova build Android - release'

5
dawez

j'ai résolu ce problème en utilisant le plugin cordova-custom-config, puis dans config.xml à l'intérieur du

<platform name="Android">

mettre 

<preference name="Android-manifest/@Android:versionCode" value="108" />

remplacez la valeur par le code de version souhaité ...

Cela a fonctionné parfaitement pour moi.

1
tiagomac

modifier le code de version dans AndroidManifest.xml (/platforms/Android/AndroidManifest.xml)

<manifest Android:hardwareAccelerated="true" Android:versionCode="2"Android:versionName="0.0.2" package="com.ionicframework.zinescreen841178"   xmlns:Android="http://schemas.Android.com/apk/res/Android">

changez le code de version ici, pas dans le fichier config.xml, il ne sera pas mis à jour. Ensuite, si vous prenez une version release, il générera un nouveau code de version.

0
zabusa

Vous n'avez pas besoin de modifier AndroidManifest.xml car il est généré par cordova lui-même. Ainsi, tous vos changements dans Manifest sont annulés par cordova.

Et tout est responsable est build.gradle situé dans le dossier de la plate-forme

fichier -> plateforme/build.gradle

Rechercher 

if (minSdkVersion> = 20) {defaultConfig.versionCode + = 9} sinon if (minSdkVersion = 14) {defaultConfig.versionCode + = 8}

comme votre code de version est mis à jour à partir d'ici, vous pouvez le changer ou le coder en dur 

0
Richen Yadav