【问题标题】:Gradle - build sass per productflavor (multi folder)Gradle - 根据产品风味构建 sass(多文件夹)
【发布时间】:2017-01-02 18:40:37
【问题描述】:

我们创建了一个带有 webview 的 Android 应用程序,它显示了 assets 文件夹中的本地网站。

该项目具有不同的 Product Flavor 以生成具有不同样式和内容但具有相同代码库(原生 Java 和 HTML / JS)的不同应用程序。

对于每种风味,我们想要定义一个不同的 sass 文件,其中包含针对该特定风味的颜色和调整。

我知道我需要在 gradle 中创建一个构建 CSS 文件的任务,但我不知道从哪里开始:

  • 如何获取特定风格的 assets 文件夹的 url?
  • 我可以使用特殊的 gradle 插件来构建 sass,还是必须创建一个执行“sass”命令的任务?
  • 当我使用另一个 gradle 插件(如 compass)时,如何为每种风格配置正确的文件夹?插件设置位于顶层,而不是 Android 插件级别。

【问题讨论】:

    标签: android gradle sass


    【解决方案1】:

    我终于有了解决办法!

    将此添加到主文件夹(不是您的应用程序)中的 build.gradle:

    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()
        }
    }
    

    将这个添加到 app 模块的 build.gradle 中:

    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()
                }
            }
        }
    }
    

    我从没想过它会成功,但它确实有效!

    【讨论】:

    • 一个重要提示:当您使用“生成签名的 APK..”时,此构建任务由于某种原因无法正常工作。当我使用带有signingConfigs的发布变体中的运行按钮构建它们时:'build\outputs\apk'中的APK没问题。
    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多