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.
- Funciones de llamada dentro de fragmentos en Android
- ¿Debo crear una sucursal para la versión gratuita de mi aplicación para Android?
- ¿Cómo debo estructurar mi proyecto para compartir clases entre una aplicación cliente de Android y una aplicación de servidor JSP?
- ¿Cómo obtener información sobre la versión del mercado de las aplicaciones de Google Play Store?
- ¿Cómo desactivar el control de versiones en android studio?
¿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?
- Android Studio: Cómo elegir qué importar de VCS
- ¿Qué es un buen sistema de control de código libre para el desarrollo de android de eclipse?
- Intellij (Android Studio) git integración: ¿Dónde está .git?
- La carpeta "gen" de Android y SVN - enemigos amargos
- ¿Cómo libera dos versiones de una aplicación en el Market?
- ¿Cómo debo organizar el control de código fuente para los proyectos de Android, incluidas las bibliotecas?
- ¿Qué entra en el control de código fuente?
- Cómo bifurcar el código de todo el sistema operativo Android?
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 )
Este constructor debe invocar la android-increment-manifest-version
usando el AndroidManifest.xml
del proyecto como argumento
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.
- ¿Qué significa "se ejecuta en el hilo de interfaz de usuario" para onPostExecute () realmente significa?
- Android – Abrir adjunto de gmail con mi aplicación