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

4 Solutions collect form web for “Detección de configuración de compilación (depuración o liberación) dentro de ant script”

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

  • RSA Encryption: Diferencia entre Java y Android
  • ¿Existe un Java / Android equivalente a la función iOS "componentsJoinedByString" para un NSArray?
  • Android: layout_gravity no funciona como se esperaba
  • Cómo agregar ruta de seguimiento para mover sprite en andengine
  • ¿Por qué el archivo de escritorio AES IO es incompatible con el archivo AES de Android?
  • Declare una variable global, o declare varias veces en cada clase
  • Cambiar el perfil de calidad en SonarQube.com
  • Recortar mapa de bits sin leer todo el mapa de bits primero
  • Excluyendo índices de un HashMap
  • Cortar la imagen después de seleccionar el área mediante la detección de bordes en android
  • ¿Cómo crear un widget de Android con opciones?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.