Gradle – build sass por productflavor (carpeta múltiple)

Hemos creado una aplicación de Android con una vista web que muestra un sitio web local de la carpeta de activos.

El proyecto tiene diferentes Flavors de producto para generar aplicaciones diferentes con diferentes estilos y contenido, pero con las mismas codebas (Java nativo y HTML / JS).

Para cada sabor queremos definir un archivo sass diferente con los colores y ajustes para ese sabor específico.

Sé que tengo que crear una tarea en gradle que construye los archivos CSS, pero no tengo ni idea de por dónde empezar:

  • ¿Cómo obtengo la url de la carpeta de activos de un sabor específico?
  • ¿Puedo usar un plugin gradle especial para construir sass o tengo que crear una tarea que ejecute el comando "sass"?
  • Cuando utilizo otro complemento gradle como compás, ¿cómo configuro las carpetas correctas para cada sabor? La configuración del complemento está en el nivel superior y no en el nivel de complemento de Android.

    One Solution collect form web for “Gradle – build sass por productflavor (carpeta múltiple)”

    ¡Finalmente tengo la solución!

    Añada esto a su build.gradle en la carpeta principal (no en su aplicación):

    buildscript { repositories { jcenter() mavenCentral() maven { url 'http://dl.bintray.com/robfletcher/gradle-plugins' } } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.github.robfletcher:compass-gradle-plugin:2.0.6' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } 

    Añada este build.gradle del módulo de la aplicación:

     apply plugin: 'com.android.application' apply plugin: 'com.github.robfletcher.compass' android { [..] android.applicationVariants.all { variant -> for (output in variant.outputs) { def assetsDir = output.packageApplication.assets; tasks["merge${variant.name.capitalize()}Assets"].doLast() { println "Assets folder: " + assetsDir def _ccsDir = file("$assetsDir/css") def _sassDir = file("$assetsDir/sass") def _imagesDir = file("$assetsDir/images") def _javascriptsDir = file("$assetsDir/js") def _fontsDir = file("$assetsDir/fonts") project.compass { cssDir = _ccsDir sassDir = _sassDir imagesDir = _imagesDir javascriptsDir = _javascriptsDir fontsDir = _fontsDir } //compileSass project.compassCompile.execute() } } } } 

    Nunca pensé que funcionaría, pero funciona!

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.