Construir el proyecto android desde la línea de comandos con diferentes urls / Environment

Quiero construir el proyecto android desde la línea de comandos. Normalmente, construyo el proyecto para dos entornos (comerciante y producción) y quiero hacerlo para Merchant y Production URL automáticamente desde la línea de comandos, sin que yo especifique en el proyecto manualmente cada vez. Por ejemplo, diga, cree un proyecto para el entorno de Producción o diga, cree un proyecto para el entorno de comerciante especificando el entorno en el comando mismo. Se puede hacer? Por favor ayuda.

Con Ant, puede personalizar su proyecto copiando un archivo de recursos de plantilla o un archivo java de plantilla que se generará antes de ejecutar el destino de lanzamiento del archivo estándar Ant de android.

Los archivos generados deben ser ignorados para el control de versiones.

Aquí hay una muestra de objetivo ANT que se debe llamar antes de crear la aplicación con la liberación de hormigas. Genera un archivo java y un archivo de recursos:

<target name="updateMyConfiguration""> <copy file="./MyTemplateConfiguration.java" tofile="./src/com/mycompany/android/myapp/MyCodeConfiguration.java" overwrite="true"> </copy> <replace file="./src/com/mycompany/android/myapp/MyCodeConfiguration.java"> <replacefilter token="token_my_boolean" value="${code.configuration.my_boolean}" /> <replacefilter token="token_my_integer" value="${code.configuration.my_integer}" /> <replacefilter token="token_my_string" value="${code.configuration.my_string}" /> </replace> <copy file="./MyTemplateRes.xml" tofile="./res/values/MyResConfiguration.xml" overwrite="true"> </copy> <replace file="./res/values/MyResConfiguration.xml"> <replacefilter token="token_my_string" value="${res.configuration.my_string}" /> <replacefilter token="token_my_integer" value="${res_configuration.my_integer}" /> </replace> </target> 
 package com.mycompany.android.myapp; public final class MyCodeConfiguration { static final boolean my_boolean = token_my_boolean; static final String my_string = "token_my_string"; static final int my_integer = token_my_integer; } 
 <?xml version="1.0" encoding="utf-8"?> <resources> <add-resource type="string" name="my_string"/> <string name="my_string">token_my_string</string> <add-resource type="integer" name="my_integer"/> <integer name="my_integer">token_my_integer</integer> </resources> 

Entonces sólo tienes que ejecutar Ant de esta manera:

 ant updateMyConfiguration -Dres.configuration.string=MyCustomBuildString -Dcode.configuration.my_integer=1234 

Usted puede construir su proyecto con Maven, Ant y Gradle. Todos harán lo que quieras.
Utilizo Maven por lo tanto me centraré en la configuración de Maven. Podría ser una tarea compleja si no sabes cómo funciona Maven.

Configurar Maven

Primeros requisitos que se describen aquí:
https://code.google.com/p/maven-android-plugin/wiki/GettingStarted

Configure su proyecto para construir con plugin de maven de android:
https://code.google.com/p/maven-android-plugin/

Configuración de ejemplo para Eclipse:
https://code.google.com/p/maven-android-plugin/wiki/QuickStartForEclipseProject

También puede generar proyecto de ejemplo con el comando siguiente:

 mvn archetype:generate \ -DarchetypeArtifactId=android-quickstart \ -DarchetypeGroupId=de.akquinet.android.archetypes \ -DarchetypeVersion=1.0.8 \ -DgroupId=com.myproject \ -DartifactId=my-android-application 

Crear perfil

El segundo paso es crear perfiles de construcción para la producción.

IMPORTANTE: las siguientes bases de fragmentos de perfil funcionan con pom.xml generado con el comando mvn archetype:generate command above.

El perfil que aparece a continuación reemplaza la cadena del archivo que se encuentra en res / values ​​/ strings.xml

formar:

 <string name="hello">Whatever text</string> 

a:

  <string name="hello">productionURL</string> 

El perfil (incluirlo en pom.xml arriba </project> ):

 <profiles> <profile> <id>production</id> <build> <plugins> <plugin> <groupId>com.google.code.maven-replacer-plugin</groupId> <artifactId>replacer</artifactId> <version>1.5.2</version> <executions> <execution> <phase>process-sources</phase> <goals> <goal>replace</goal> </goals> </execution> </executions> <configuration> <file>${project.basedir}/res/values/strings.xml</file> <regex>true</regex> <replacements> <replacement> <token><![CDATA[(<string name="hello">)(.+)(</string>)]]></token> <value><![CDATA[$1productionURL$3]]></value> </replacement> </replacements> </configuration> </plugin> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <inherited>true</inherited> <configuration> <sign> <debug>true</debug> </sign> </configuration> </plugin> </plugins> </build> </profile> </profiles> 

Utiliza https://code.google.com/p/maven-replacer-plugin/ para reemplazar la cadena.

Para Comerciante, simplemente copie y pegue <profile> lista de arriba, cambie <id>production</id> a <id>merchant</id> y en <value> URL de actualización.

Construir

 mvn install -Pproduction 

o

 mvn install -Pmerchant 
  • Dependencia de la biblioteca de Android Gradle con la dependencia de la biblioteca mediante Nexus
  • ¿Soporta Android Studio Maven?
  • Nombre del paquete variable con Maven Android Plugin
  • No se ha encontrado ningún complemento para el prefijo 'android' en el proyecto actual
  • Error en el archivo xml de maven pom: Creando un proyecto Android
  • Invoque "Maven Project Builder" en Eclipse en Ejecutar como -> Aplicación de Android (o manualmente)
  • Android y maven: problema con las dependencias de maven en apk
  • Maven, IntelliJ Idea y Fuentes de Android
  • Diferenciación de la compilación de depuración y producción de una aplicación para Android
  • Añadir biblioteca java al proyecto Android Studio con el repositorio maven
  • Incluir dependencias de maven en eclipse "Ejecutar como -> Aplicación para Android" build
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.