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.

2 Solutions collect form web for “Construir el proyecto android desde la línea de comandos con diferentes urls / Environment”

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 
  • Crear una dependencia gradle - eliminar el acceso a sus propias dependencias
  • Android - Proguard con httpcore y httpmime con Android Studio y Gradle
  • No se puede crear una aplicación cuando se usa gradle (Android Studio) y local maven repo
  • ActionBarSherlock + maven + eclipse: dependencia no encontrada en el espacio de trabajo
  • Nombre del paquete variable con Maven Android Plugin
  • ¿Cómo conoce Android Studio sobre las nuevas versiones de dependencia?
  • Maven y Android Facebook SDK apklib
  • ¿Qué está haciendo Eclipse cuando dice que está actualizando índices?
  • Evitar que la dependencia de Gradle para la biblioteca de soporte sea reemplazada por una versión más reciente
  • No obtener fuentes procesadas (generadas) de anotación compiladas en apk, usando maven
  • Eliminar el sufijo de liberación al publicar una biblioteca de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.