android - Gradle - 根据产品风格构建 sass(多文件夹)

标签 android gradle sass

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

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

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

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

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

最佳答案

我终于找到了解决方案!

将此添加到主文件夹(不是您的应用程序)中的 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()
    }
}

将此添加到应用模块的 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()
            }
        }
    }
}

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

关于android - Gradle - 根据产品风格构建 sass(多文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285167/

相关文章:

android - SGS4 安卓 4.4.2 - OGL ES2 崩溃

html - 插入 yml 的样式 html 元素不起作用

迁移 TypeScript 后,由 SASS 编译的 CSS 文件不会加载到 CRA 应用程序中

java - 使用 Java 的 Android 应用程序 - udp 字符串不发送

android - 必须使用 Activity 访问 token 来查询有关当前用户 FQL 的信息

unit-testing - Gradle : Multiple configurations for Test tasks

android - 拆分后的apk仅上传到Google Play

android - 是否可以在不安装Android Studio和Android SDK的情况下构建Android Studio项目?

css - BEM:知道分解码件和定位组件有多远?

java - 通过 AppMessage 在 Pebble 上显示图像