tabla simbolos simbolo quimicos quimico quien que procedencia porque periodica origenes nombres nombre los llama les honor historia galio fue elementos elemento dio cuyo continentes con coinciden cada asignado cordova cordova-3

cordova - simbolos - procedencia de los nombres de los elementos quimicos



¿Cómo obtener Cordova 3.4.0 para establecer el nombre/código de la versión de Android en la compilación? (7)

Actualmente estoy usando Cordova 3.4.0 y la CLI para construir mi proyecto para apuntar a Android usando el comando:

cordova build android

O

cordova build android --release

Mi config.xml tiene la siguiente especificación:

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

El AndroidManifest.xml resultante en myapp / platforms / android no se actualiza con el código de versión y versión especificado en config.xml. Se mantiene como el predeterminado:

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

¿Es esto un error? ¿O hay alguna otra forma en que deba especificar el código de versión y el nombre de versión para Android en config.xml? Incluso tal vez, ¿hay un gancho que pueda usar para actualizar AndroidManifest.xml con la versión correcta antes de compilar?

Prefiero no tener que actualizar esto manualmente cada vez que quiero que cambie como:

  1. Es propenso a errores e incómodo
  2. No será algo obvio cambiar para desarrolladores desconocidos
  3. Ninguna de las carpetas de la plataforma está almacenada en el control de código fuente

Por estos motivos, me gustaría que los números de versión se establezcan en config.xml. ¿Algunas ideas?

Gracias


En caso de que alguien todavía tropiece con este: sigue siendo cierto en la última versión Cordova (6.4.0) . Si no tiene algún Jenkins u otro proceso para hacer esto por usted, puede poner el código de versión en su propia línea

<widget id="com.example.yourapp" android-versionCode="1112" version="1.1.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">

y luego ejecute esto para arriba (por ejemplo, use en su script de lanzamiento):

VersionCode=`cat config.xml | grep android-versionCode | sed -e ''s/.*android-versionCode=/"/(.*/)/"//1/''` VersionCode=$((VersionCode+1)) sed -i "s/.*android-versionCode=/"/(.*/)/"/ android-versionCode=/"$VersionCode/"/" config.xml

Yah, sucio pero funciona :)


No es necesario cambiar AndroidManifest.xml, ya que es generado por Cordova, por lo que cada cambio en Manifiesto se revierte por cordova

Y todo es responsable de que build.gradle se encuentre en la carpeta de la plataforma

archivo -> plataforma / build.gradle

Buscar

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

como su código de versión se actualiza desde aquí, puede cambiarlo o codificarlo


Por fin con Cordova 3.5.0-0.2.4 agregué este atributo al nodo <widget> config.xml

android-versionCode="10"

y el AndroidManifest.xml se actualizó correctamente para

android:versionCode="10"


arreglé este problema usando el complemento cordova-custom-config, luego en config.xml dentro del

<platform name="android">

poner

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

cambie el valor al código de la versión deseada ...

Funcionó perfectamente para mí.


editar el código de versión en 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">

cambie el código de la versión aquí no en el config.xml que no actualizará. Luego, cuando tome una versión del lanzamiento, generará un nuevo código de versión para usted.


siguiendo la respuesta de MichaelOryl hay algo que implementé usando cordova 3.4 y usando la herramienta bash XMLStarlet

Básicamente, copia el valor del atributo versionCode de config.xml en AndroidManifest.xml

En lugar de ejecutar esto:

cordova build android --release

ejecutar [debería convertirse en 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

De esta forma cuando cuando actualizo a cordova 3.5, puedo reutilizar el habitual ''cordova build android --release''


versionName no debería ser un problema aquí, ya que se copia desde config.xml al archivo AndroidManifest.xml en plataformas / android (al menos en Cordova 3.4.0). Esa parte no tuve ningún problema.

Sin embargo, obtener el código de versión incrementado fue toda una tarea. Una serie de tareas, en realidad, que agregué a Grunt''s Gruntfile.js.

Esta es la tarea de string-replace . " grunt string-replace: versionCode " incrementará el código de versión almacenado en package.json. " grunt string-replace: androidVersionCode " tomará ese valor y lo colocará en el archivo plataformas / android / AndroidManifest.xml:

// STRING-REPLACE ''string-replace'': { versionCode: { // update the version code stored in package.json options: { replacements: [ { pattern: /[''"]androidVersionCode[''"]:.*?[''"](/d*)[''"]/ig, replacement: function (match, p1, offset, string) { return ''"androidVersionCode": "'' + (parseInt(p1) + 1) + ''"''; } } ] }, files: { ''package.json'': ''package.json'' } }, androidVersionCode: { // update the version code stored in AndroidManifest.xml options: { replacements: [ { pattern: /android:versionCode=[''"](/d*)[''"]/ig, replacement: function (match, p1, offset, string) { var pkg = grunt.file.readJSON(''package.json''); grunt.log.writeln("pkg.androidVersionCode: " + pkg.androidVersionCode); grunt.log.writeln(''Returning: '' + ''android:versionCode="'' + pkg.androidVersionCode + ''"''); return ''android:versionCode="'' + pkg.androidVersionCode + ''"''; } } ] }, files: { ''platforms/android/AndroidManifest.xml'': ''platforms/android/AndroidManifest.xml'' } } }

Requiere que se llame desde el archivo Gruntfile.js antes de su uso, por supuesto (así como npm install grunt-string-replace):

grunt.loadNpmTasks(''grunt-string-replace'');

Necesitará agregar una línea como la siguiente a su archivo package.json para que todo esto funcione:

"androidVersionCode": "13", // or whatever value is current for you

Se incrementará con la tarea string-replace: versionCode anterior. Puse la línea en package.json después de la línea que comienza con "versión":

Un truco importante para hacer que esto funcione es asegurarse de que en lugar de llamar a "cordova build android", se llame "cordova prepare android", luego "grunt replace-string: androidVersionCode", y luego "cordova compile android". Build es solo un atajo para llamar a "preparar" y luego "compilar", y entre esas dos tareas es cuando tienes que modificar el archivo AndroidManifest.xml para evitar que se sobrescriba, parece.

Mi proceso de compilación es mucho más complicado porque en realidad estoy incrementando el valor de la versión en package.json con grunt-bump para Grunt y luego inyectándolo en config.xml usando xmlpoke para Grunt y mi página de xmlpoke usando string-replace . Yo uso grunt-shell para llamar a todos los pasos de compilación de Cordova para hacer que todo se copie donde va y ejecutar en el orden correcto.

Déjeme saber si esto ayuda.