2011-02-17 20 views
13

Lo que quiero es una forma de tener configuraciones que dependen de la configuración de compilación. Para dar un ejemplo específico, mi aplicación de Android se conecta a un servicio web. En desarrollo, quiero que la url del servicio sea extraída de un valor configurable. En Test, quiero que se ingrese un valor diferente. En producción, otro valor más.Android: utilice una hormiga para crear configuraciones de compilación que modifiquen los valores de configuración

Así, en código que tengo algo como esto:

public class HttpRequestHelper 
{ 
    private static String GetServiceUrl(ServiceAction action) 
    { 
     return serviceUrl + action.toString(); 
    } 
} 

Por defecto (cuando se depura/corriendo a través de Eclipse), quiero que url para ser http://localhost:1234

En Prueba Quiero https://test.mydomain.com

En producción Quiero https://mydomain.com

Soy nuevo en eclipse y hormiga y hace mucho tiempo que no nos conviene ed java. ¿Cómo hago para configurar esto? ¿Cómo debería verse build.xml? Entiendo que cuando quiera construir las versiones de prueba/prod tendré que usar la línea de comando. Esta bien. Pero no sé cómo obtener este serviceUrl auto-set dependiendo de la compilación. Ni siquiera estoy seguro de cuál es el mejor lugar para poner esta información (¿un recurso, un archivo de propiedades?). Realmente quiero evitar configurarlo, construirlo, configurarlo, construirlo, etc.

Respuesta

9

Como Las respuestas mencionadas anteriormente dicen que debe colocar las URL en un archivo de propiedades como dev.properties, test.properties, prod.properties, etc.

Ahora, lo único que debe hacer es hacer que su compilación sea lo suficientemente inteligente como para elegir un archivo de propiedad dependiendo del entorno.

que se puede hacer pasando un parámetro a ANT, algo así como:

$ hormiga -file MyBuild.xml -DcurrentEnv = dev (para el desarrollo medio ambiente)
$ hormiga -file MyBuild.xml -DcurrentEnv = prueba (para prueba)
$ ant -file MyBuild.xml -DcurrentEnv = prod (para la producción)

Dentro de su escritura de la estructura, esto es cómo se puede incluir su archivo de propiedades:

<target name="jarMe"> 
    <jar destfile="sample.jar" basedir="src" includes="${currentEnv}.properties"/> 
</target> 

Con esto en su lugar, el nombre que le proporcione a la hora de construir , el archivo de propiedad con ese nombre será recogido.

2

Comenzaré colocando las URL en un archivo de propiedades que luego puede colocar en el classpath. Haga una prueba y un archivo de propiedades de producción. Luego, dependiendo de la construcción, coloque el archivo correcto en la ruta de clases y extraiga las propiedades en tiempo de ejecución.

4

Se podría tratar de tener un archivo de propiedades siguiente en el archivo build.properties:

service.url=* 

Y usted podría tener http://localhost:1234 o https://test.mydomain.com en local.properties para su desarrollo y pruebas de integración, y que podría ser establecido a https://mydomain.com en default.properties.

Al hacer esto, obtendrá diferentes valores para service.url en diferentes entornos de compilación. Se podría utilizar este valor para generar un archivo de configuración, y analizarlo en su código, o ponerlo a env variables, o simplemente ponerlo en un archivo de recursos, y Android lo leerá para usted:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="service-url">@@[email protected]@</string> 
</resources> 
Cuestiones relacionadas