Incorporar detalles de la versión en android APK

Mi código se almacena en el control de versiones SVN. Utilizo Eclipse para crear mi aplicación de Android.

En mi aplicación, tengo una sobre-caja. Quiero mostrar el control de código fuente correcto / tag / whatever en esto.

¿Hay una manera de automatizar esto para que mi cadena de versión en el about-box siempre tiene razón, o es algo que tengo que editar a mano cada vez que me comprometo?

Thx para las primeras respuestas sobre $ keywords $.

Establecer la propiedad SVN svn:keywords to Rev private String m_svn_rev = "$Rev:$" una private String m_svn_rev = "$Rev:$" cada vez que envíe ese archivo.

SVN es un sistema de control de versiones por archivo.

¿Qué lleva en lugar de preguntarse si puedo de alguna manera pre-procesar algunos archivos en la construcción de Android thingy para inyectar la salida de svnversion?

Un enfoque posible. En tu AndroidManifest.xml agrega metadatos a tus Actividades para mantener la revisión o lo que quieras usar

 <activity android:name="SampleActivity"> <meta-data android:value="$Rev: 164 $" android:name="com.example.version" /> </activity> 

Entonces en su actividad

 try { final ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); final String version = (String)ai.metaData.get("com.example.version"); System.out.println("version: " + version); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

También puede configurar android:versionName="$Rev$" en su manifiesto.

Para automatizar el proceso de incrementar el número de versión en android:versionCode y validar el AndroidManifest.xml hay varias opciones, construir con maven o ant podría ser alternativas, pero vamos a hacerlo con Eclipse y ADT.

Primero, agregue un constructor a su proyecto ( Mi proyecto -> Propiedades -> Constructores )

texto alternativo

Este constructor debe invocar la android-increment-manifest-version usando el AndroidManifest.xml del proyecto como argumento

texto alternativo

Android-increment-manifiesto-script de la versión es algo así como

 #! /bin/bash # android-increment-manifest-version: # increment the version number found in the AndroidManifest.xml file # (android:versionCode="n") in place and commit it to subversion. # # Copyright (C) 2010 Diego Torres Milano - http://dtmilano.blogspot.com usage() { echo "usage: $PROGNAME AndroidManifest.xml" >&2 exit 1 } PROGNAME=$(basename $0) if [ "$#" -ne 1 ] then usage fi MANIFEST="$1" perl -npi -e 's/^(.*android:versionCode=")(\d+)(".*)$/"$1" . ($2+1) . "$3"/e;' $MANIFEST svn ci -m "Version incremented" $MANIFEST 

Sólo un consejo genérico, no menciona su sistema de control de versiones.

Inserte el encabezado apropiado (algo como $ Version: $) en el texto para el cuadro about. Cuando se compromete, la nueva versión # se almacenará y al construir el valor se mostrará.

[editar]
1. crear su alrededor de la caja como fuente separada, solamente comprobarla adentro cuando usted incrementa la versión.
2. incrustar su propia versión en un archivo de encabezado (y no se olvide de cambiarlo) y luego usar esa cadena de versiones en su casilla about (como una extern string * por ejemplo)
[/editar]

De la idea de dtmilano.blogspot.com … pero utilizando sólo la revisión SVN:

 #! /bin/bash # The first argument is full path of AndroidManifest.xml file usage() { echo "usage: $PROGNAME AndroidManifest.xml" >&2 exit 1 } if [ "$#" -ne 1 ] then usage fi PROGNAME=$(basename $0) MANIFEST="$1" SVNREVISION=$(svn info | sed -n '5p' | sed -e 's/.*[^0-9]\([0-9]*\).*/\1/g') if [ -f $MANIFEST ]; then sed "s/android:versionCode=\"[0-9]*\"/android:versionCode=\"${SVNREVISION}\"/" $MANIFEST > $MANIFEST.tmp mv $FULLPATH.tmp $MANIFEST echo "The android:versionCode properties of file ${MANIFEST} is ${SVNREVISION}"; fi; #svn commit -m "Update version in $MANIFEST" $MANIFEST 

El número de versión cambia sólo cuando se cambia la revisión SVN, es decir, sólo cuando se ejecuta svn commit.

Si lo desea, puede agregar un cheque para la revisión cambiada, si es así, ejecute el sed para cambiar el archivo. También es posible cambiar Revisión a la última revisión SVN en el servidor.

Esto puede ser una tangente, pero utilizo la etiqueta $ label de Cruse Control para golpear la versión en mi pantalla. Cada vez que compruebo algo, CC hace una actualización y escupe una compilación. Uno de los pasos de mi script de hormigas inyecta el valor $ label del sistema de control de crucero en un valor dentro de strings.xml. Esto me da un nuevo número de versión con cada commit. Puedo comprobar los registros del CC y emparejar un número de la construcción hasta un número de la revisión de SVN.

Probablemente más trabajo de lo que estás interesado en hacer por algo tan simple. También apostaría a que cualquier otro sistema de construcción por ahí tendrá una característica similar.

  • Acabo de crear pequeño proyecto androide en Eclipse, ¿qué archivos debo agregar al control de versiones?
  • Importar proyecto de prueba de Android en Eclipse desde el control de versiones
  • Android Dev: ¿SVN local para proyectos Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.