cómo hacer fuera de árbol android construye con gradle

Una de las características más atractivas de cmake es el paradigma de construcción fuera del árbol, que permite construir variantes de un proyecto en carpetas separadas, haciendo así que sea más rápido cambiar entre configuraciones de construcción.

¿Existe tal mecanismo en android + gradle? Idealmente, no se crearía ni modificaría un solo archivo en el árbol de origen.

EDIT – Lo que quiero decir con fuera de árbol es esto:

Mi carpeta de origen se ve así:

/work/project/build.gradle /work/project/src/... /work/project/res/... 

Cuando ejecuto gradle construir , termino con nuevas carpetas como:

 /work/project/.gradle/... /work/project/build/.. /work/project/res/... 

Quisiera construir el proyecto usando gradle de modo que las nuevas carpetas y los archivos generados estén en una carpeta fuera del proyecto tal como:

 /work/build-project/.gradle/... /work/build-project/build/.. /work/build-project/res/... 

Aquí está un buen hallazgo en cuanto a la filosofía detrás de él: http://voices.canonical.com/jussi.pakkanen/2013/04/16/why-you-should-consider-using-separate-build-directories/

Tienes que añadir al archivo build.gradle tu proyecto raíz:

 allprojects { buildDir = "/external/path/${rootProject.name}/${project.name}" } 

Android soporta la construcción con variantes. Consulte la documentación sobre las versiones de Gradle:

Edificio con variantes

Tratar de especificar allprojects.buildDir como una ruta relativa no funcionaría correctamente con los módulos a medida que se resuelva desde el módulo actual.

El truco es definirlo así:

buildDir = "${rootDir.absolutePath}/../../../bin/Android/${project.name}"

  • Android Studio: cómo crear un segundo tipo de compilación de depuración
  • Obtener el error "entrada duplicada: com / google / android / gms / internal / zzble.class" al intentar agregar un paquete
  • Android + Gradle: lista los directorios en un archivo
  • No se puede generar APK firmado con proguard habilitado cuando se usa Joda Time
  • Método de DSL no admitido de Gradle encontrado: 'exclude ()'
  • Creación de una aplicación para Android con Jenkins
  • ¿Cómo decirle a Gradle que use un diferente AndroidManifest desde la línea de comandos?
  • Android Studio publica una biblioteca local
  • Gradle no puede compilar con java 1.8
  • Gradle Error: Error de ejecución para la tarea ': app: processDebugGoogleServices'
  • Appcompat v7 no se introduce en el proyecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.