¿Cómo automatizar el incremento de código de versión en AndroidManifest?

Tengo una aplicación cargada en el repository de Subversion / SVN. ¿Es posible usar script para cambiar de alguna manera el código de la versión de la aplicación almacenada en AndroidManifest ? Quiero decir durante / después de la finalización de la compra / actualización?

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mypackage" android:versionCode="100000" android:versionName="1.0"> 

SVN tiene una sustitución de palabra key que puede usar para poner el número de revisión en un file. Sin embargo, esto dará como resultado la revisión cuando se modificó por última vez el file de manifiesto, que no es lo que desea.

La mejor forma de lograr lo que desea es llamar a svnversion desde su script de compilation e incrustar el resultado en el file de manifiesto desde allí. Puede tener un file manifest.template bajo control de versión que pueda ser utilizado por su script de compilation para generar el file de manifiesto real. Ponga una palabra de marcador de position en la plantilla y reemplácela por el número de revisión obtenido con svnversion .

editar : en Eclipse probablemente usarías un script Ant e invocarlo antes de la compilation normal . El ejemplo vinculado genera un file de class con el número de revisión, pero también podría generar un file de manifiesto de una manera muy similar.

Lo he hecho agregando un objective de compilation extra, por lo que el código de versión se incrementa cuando se crea el proyecto, no cuando se compromete con SVN. Estas son instrucciones para hacer que esto funcione en IntelliJ IDEA.

Primero, agregue un nuevo file en la raíz de su proyecto llamado svn-revision.build.xml con los siguientes contenidos:

 <project default="svn-revision"> <target name="svn-revision"> <exec executable="sh" outputproperty="revision"> <arg value="-c" /> <arg value="svnversion | sed -e 's/^[^:]*://;s/[A-Za-z]//'" /> </exec> <echo>Revision (app): ${revision}</echo> <replaceregexp file="AndroidManifest.xml" match='android:versionCode="([^".]+)(\.[^"]*)?"' replace='android:versionCode="${revision}"' /> </target> </project> 

Luego, en el menu, vaya a View > Tools > Ant Build , luego presione el pequeño button + en la window y agregue el file recién creado. Al hacer clic en el button verde 'ejecutar' en la window Ant Build ejecutará el script de inmediato. Para que el script se ejecute cada vez que compile, deberá establecer el objective 'svn-revision' como un destino pnetworkingeterminado.

Puede hacerlo en time de compilation utilizando el objective xpath Ant provisto por los scripts de compilation pnetworkingeterminados de Android para get el valor actual, luego use Ant replace.

El enfoque SVN está bien, pero no necesariamente adecuado para todos. Prefiero tener el control en la aplicación versionName y el incremento de versionCode así que hice mi propia aplicación Java simple para hacer eso

caracteristicas:

  • Se supone que versionName es major.minor.point (según lo recomendado por el documento de Android)
  • versionName puede conservarse, restablecerse a 1.0.0 o incrementarse (una sola parte de la misma y la (s) parte (s) posterior (es) está (n) configurada (s) en 0)
  • versionCode será reemplazado por Unix Time

Disponible aquí: número de compilation de manifiesto de Android