Cómo Incrementar Automáticamente versionCode al exportar aplicaciones de Android en Eclipse?

Quiero auto-incrementar el versionCode y versionName del archivo de manifiesto de la aplicación android cuando hago clic en Exportar (para exportar una nueva versión de la aplicación)

He encontrado la segunda respuesta aquí ( Auto incremento de código de versión en la aplicación para Android ) extremadamente útil (el comentario incluye programas .exe para incrementar automáticamente Android VersionCode), sin embargo, lo hicieron correr en Build, quiero que se ejecute cuando hago clic en File – > Exportar, ver imagen por favor

Introduzca aquí la descripción de la imagen

Podría considerar la modificación del botón Archivo -> Exportar para ejecutar un constructor para incrementar el código de versión (como se muestra en la publicación que mencionó ) además de la funcionalidad habitual de ese botón. El punto de extensión org.eclipse.ui.menus parece un buen punto de partida. (Renuncia: no he probado esto.)

Sin embargo, podría ser bueno tener en cuenta el siguiente xkcd aquí:

XKCD: ¿Vale la pena el tiempo?

He hecho esto con un montón de pasos de hormigas personalizadas.

En primer lugar, necesita extraer el número de compilación en un archivo de propiedades. Vamos a llamarlo version.properties

A continuación, el paso para incrementar el código de versión es:

 <target name="increment-version-code"> <propertyfile file="version.properties"> <entry key="versionCode" type="int" default="0" operation="+" value="1" /> </propertyfile> </target> 

Esto leerá la entrada versionCode , la incrementará y la guardará de nuevo en version.properties.

Hasta aquí todo bien. El último paso es conseguir que versionCode en el archivo AndroidManifest.xml y por desgracia ahora se vuelve complicado.

La forma en que lo resolví fue para regenerar el manifiesto de una plantilla en cada compilación utilizando la funcionalidad de filtrado en hormiga.

 <target name="generate-manifest"> <filter filtersfile="version.properties"/> <copy todir="${source.dir}" overwrite="true" verbose="true" filtering="true"> <fileset dir="${source.dir}" casesensitive="false"> <include name="**/*.base"/> </fileset> <mapper type="glob" from="*.base" to="*" /> </copy> </target> 

Entonces, todo lo que queda por hacer es mover su AndroidManifest.xml a AndroidManifest.xml.base y reemplazar su atributo versionCode para leer android:versionCode="@versionCode@" . A continuación, puede ejecutar el objetivo de increment-version-code para superponer el versionCode en version.properties y el objetivo generate-manifest para convertir la plantilla .base en el manifiesto final.

Éstos se pueden agregar fácilmente como pasos de construcción a su proyecto de Eclipse o como dependencias a las construcciones de hormigas exportadas. Por desgracia, no hay gancho fácil para la funcionalidad de exportación (aunque, hay para "After Clean", que me parece lo suficientemente bueno).

Por supuesto, con Gradle en el horizonte, todo esto tendría que ser reescrito pronto. :(

  • Eclipse de un paquete de ADT se bloquea en Ubuntu 14.04
  • Dx no admitido archivo de clase versión 52.0 ... al analizar com / ejemplo / test1 / BuildConfig.class
  • Guardar Logcat en un archivo de texto en el dispositivo Android
  • Añadir dependencias a través de gradle a eclipse en el proyecto android
  • Biblioteca de Compatiblity de Android Proguard
  • ¿Puedo conectar android (Eclipse) a SQL Server (2005) usando servicios web de php?
  • Cómo cambiar correctamente el nombre del paquete en AndroidManifest.xml (por ejemplo, en el proyecto zxing / barcodescanner)
  • Ningún archivo project.properties y NullPointerException durante la creación de la nueva aplicación android
  • Diferencia entre el proyecto de la aplicación de Android y el proyecto de Android
  • Uso de HTML en el cuadro de diálogo de alerta de Android
  • Eclipse falta la compilación de C / C ++ y general de las propiedades del proyecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.