Detección de configuración de compilación (depuración o liberación) dentro de ant script

Tengo un script de hormigas que hace lo que tiene que hacer, pero necesito establecer unos valores de propiedad basados ​​en si estoy ejecutando el lanzamiento o depuración. ¿Cómo hago esto?

Si hace una diferencia, mi script de hormigón ejecuta algunas tareas de utilidad personalizadas antes de realizar la compilación de android.


Para responder a mi propia pregunta:

Las propiedades a buscar son " build.mode.release " y " build.mode.debug ", sin embargo, hay una advertencia … si su manifiesto tiene debuggable = "true" , el sistema REVERTS a modo de depuración con un ligero " Corto plazo "(IMO)

  1. Build.mode.release NO está establecido ,
  2. Build.mode.debug tampoco está establecido
  3. La firma de depuración está deshabilitada (debe proporcionar un almacén de claves, un alias y una contraseña)

Nota: esto sólo se aplica a las compilaciones de Android

La razón de la "advertencia" está documentada en el proyecto main_rules.xml Android ( $ANDROID_SDK_ROOT/tools/ant/main_rules.xml ):

 <target name="-set-release-mode"> <!-- release mode is only valid if the manifest does not explicitly set debuggable to true. default is false. We actually store build.packaging.debug, not build.release --> <xpath input="AndroidManifest.xml" expression="/manifest/application/@android:debuggable" output="build.packaging.debug" default="false"/> ... </target> 

Así que lo que usted quiere comprobar es build.mode.debug (ejecutado a través de ant debug ), build.mode.release (cuando @debuggable=false y ejecutado con la ant release ), y finalmente para cumplir con su advertencia: build.packaging.debug (Cuando @debuggable=true y ejecutado con la ant release )


He aquí un ejemplo que podría funcionar de forma previa a la compilación:

 <target name="-my-debug-precompile" if="build.mode.debug"> <!-- This is executed for any "debug" build ("ant debug") --> </target> <target name="-my-release-precompile" unless="build.mode.debug"> <!-- This is executed for any non-"debug" build (eg, "ant release", regardless of the @debuggable attribute in AndroidManifest.xml) --> </target> <!-- This is called automatically by Android's ant tasks, and delegates the task to one of the above two targets: --> <target name="-pre-compile" depends="-my-debug-precompile,-my-release-precompile" /> 

Como una actualización de la respuesta de Joe, parece que, al menos con la revisión de Android Tools 22.3, la propiedad build.mode.debug ya no existe, pero puede usar build.is.packaging.debug para diferenciar entre depuración y release

ant -D<prop-name>=<value> establecerá la propiedad en ant

Final soultion para ant debug y módulo jni:
1. en custom_rules.xml, asigne el modo de depuración a 'BUILDMODE'

 <?xml version="1.0" encoding="UTF-8"?> <project> <property name="out.library.jar.file" location="bin/classes.jar" /> <target name="-pre-compile"> <exec executable="ndk-build"> <arg value="BUILDMODE=${build.is.packaging.debug}" /> </exec> </target> </project> 
  1. Jni / Android.mk, añada lo siguiente:

Ifeq ($ (BUILDMODE), true)
LOCAL_CFLAGS=-DDEBUG
terminara si

  • ¿Por qué se recomienda llamar a MultiDex.install () en attachBaseContext (Context)?
  • Cómo recuperar Twitter y Facebook Autenticación y Token a través de las clases de Administrador de cuentas de Android
  • Android "gps requiere ACCESS_FINE_LOCATION" error, aunque mi archivo de manifiesto contiene este
  • La aplicación para Android no recibió datos del concentrador SignalR
  • Ejemplo de un elemento spinner personalizado setDropDownViewResource
  • EditText - cambia el texto mientras escribe
  • Datos de basura transmitidos en conexión WiFi TCP desde el escritorio a Android
  • Cargando parcialmente las imágenes de la URL, como lo que se implementa en WhatsApp
  • Poner ArrayList en param JsonObject
  • GridView carga lento para los recursos de imagen grande
  • Cómo obtener pruebas simples de JUnit para ejecutarse en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.