我们创建了一个带有 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/