Cómo automatizar el incremento de código de versión en AndroidManifest?
Tengo una aplicación que subió a Subversion / SVN repo. ¿Es posible utilizar el script para cambiar de alguna manera el código de la versión de la aplicación almacenado en AndroidManifest
? Quiero decir durante / después de la compra / actualización?
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mypackage" android:versionCode="100000" android:versionName="1.0">
- Simple Revision Control para Eclipse y Android
- ¿Cómo puedo combinar entre sucursales cuando el nombre del paquete es diferente?
- Número de revisión en SVN
- No se pudo abrir el editor. Android XML Editor no puede procesar esta entrada
- No hay cambios para confirmar el estudio de Android SVN
- SVN Repositorio para el código común -phonegap
- Control de versiones y proyectos de la biblioteca de Android
- Proyecto conectado a SVN que no muestra información de versión en eclipse
- Android Dev: ¿SVN local para proyectos Android?
- Agregue el módulo existente bajo control de fuente de Subversion en IntelliJ IDEA
- Qué archivos debo agregar a SVN ignorar en un proyecto utilizando Android Studio
- ¿Compartir un proyecto Android + Eclipse a través de SVN?
- Qué archivos debo ignorar en un proyecto de Android en SVN
SVN tiene sustitución de palabras clave que puede utilizar para poner el número de revisión en un archivo. Sin embargo, esto dará lugar a 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 quieres es llamar a svnversion
desde tu script de compilación e incrustar la salida en el archivo de manifiesto desde allí. Usted podría tener un archivo manifest.template
bajo control de versión que puede ser utilizado por su script de generació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
.
Edit : en Eclipse probablemente usarías un script Ant, e invocarlo antes de la compilación normal . 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.
He hecho esto añadiendo un objetivo de compilación adicional, por lo que el código de versión se incrementa al crear el proyecto, no cuando se compromete con SVN. Estas son instrucciones para que esto funcione en IntelliJ IDEA.
Primero, agregue un nuevo archivo 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>
A continuación, en el menú, vaya a View > Tools > Ant Build
, luego presione el pequeño botón +
en la ventana y agregue el archivo recién creado. Haciendo clic en el botón verde "Ejecutar" en la ventana de Ant Build ejecutará el script de inmediato. Para que la secuencia de comandos se ejecute cada vez que se crea, tendrá que establecer el objetivo 'svn-revision' como destino predeterminado.
Podrías hacerlo en el tiempo de construcción usando el objetivo Ant de xpath proporcionado por los scripts de compilación de Android predeterminados para obtener el valor actual, y luego usar Ant replace.
SVN enfoque está bien, pero no necesariamente adecuado para todos. Yo prefiero tener control sobre la versión de la aplicación y el incremento versionCode, así que hice mi propia aplicación Java simple para hacer eso
caracteristicas:
- VersionName se supone que es major.minor.point (según lo aconsejado por Android doc)
- VersionName se puede conservar, restablecer a 1.0.0, o incrementar (una sola parte de ella y parte trasera está / se establece en 0)
- VersionCode será reemplazado por Unix Time
Disponible aquí: android manifest build number
- ¿Cómo atribuir un icono que utiliza "Licencias Creative Commons (Atribución 3.0 Unported)"?
- IOException lanzada por AccountManagerFuture.getResults mientras que la conexión está viva