2011-02-08 42 views
9

Tengo una aplicación que se subió al repositorio de Subversion/SVN. ¿Es posible utilizar secuencias de comandos 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?¿Cómo automatizar el incremento de código de versión en AndroidManifest?

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

Respuesta

4

SVN tiene keyword substitution que se puede utilizar para poner el número de revisión en un archivo. Sin embargo, esto dará como resultado la revisión cuando se modificó por última vez el archivo de manifiesto, que no es lo que desea.

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

editar: en Eclipse usted probablemente use an Ant script, and invoke it before the normal build. El ejemplo vinculado genera un archivo de clase con el número de revisión, pero también podría generar un archivo de manifiesto de una manera muy similar.

+0

Alguna idea sobre cómo podría uno hacer esto si estuvieran usando Eclipse? – Felix

+0

También me gustaría saber cómo hacerlo usando Intellij IDEA – barmaley

+0

@barmaley: IDEA tiene un soporte similar para ejecutar scripts hormiga, ver [Integración Intellij And Maven] (http: //www.jetbrains.com/idea/features/ant_maven.html) –

0

Puede hacerlo en tiempo de compilación utilizando el objetivo xpath Ant provisto por los scripts de compilación predeterminados de Android para obtener el valor actual, luego use Ant replace.

+0

Por favor, dame un enlace – barmaley

4

He hecho esto agregando un objetivo de compilación extra, por lo que el código de versión se incrementa al compilar el proyecto, no cuando se compromete con SVN. Estas son instrucciones para hacer que esto funcione en IntelliJ IDEA.

En primer lugar, añadir un nuevo archivo en la raíz de su proyecto llamado svn-revision.build.xml con el siguiente contenido:

<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 menú ir a View > Tools > Ant Build, a continuación, pulse el botón pequeño + en la ventana y añadir el archivo recién creado. Al hacer clic en el botón verde 'ejecutar' en la ventana Ant Build ejecutará el script de inmediato. Para que el script se ejecute cada vez que compile, deberá establecer el objetivo 'svn-revision' como un destino predeterminado.

0

El enfoque SVN está bien, pero no necesariamente apto para todos. Yo prefiero tener de control de aplicación y nombre de la versión de la subasta versionCode así que hice mi propia aplicación Java simple de hacer que

Características:

  • nombre de la versión se supone que es major.minor.point (tal como se aconseja por doc Android)
  • nombre de la versión se puede conservar, restablecer a 1.0.0, o incrementado (una sola parte de ella y se arrastra la parte (s) es/son ajustado a 0)
  • versionCode será reemplazado por Tiempo Unix

Disponible aquí: android manifest build number

Cuestiones relacionadas