我有一个包含多种风格的项目,对于每种风格,我都有一个配置文件,用于指定要包含的资产。
这是我到目前为止所做的:
applicationVariants.all { variant ->
variant.outputs.each { output ->
def config = getFlavourConfig(variant.getFlavorName());
if(config!=null) {
if(config.get("font-assets") != null ) {
config.get("font-assets").each {
println it
/*this is not working ->*/ variant.assets.srcDirs += ['src/extensions/assets/'+it]
}
}
}
}
}
getFlavourConfig解析gson配置文件。 json有[" font-assets":[" fontfolder1"," fontfolder2"]
在这一行
variant.assets.srcDirs += ['src/extensions/assets/'+it]
我想将资源目录添加到风格中。有什么想法吗?
答案 0 :(得分:3)
我最终在构建时只使用一种口味,并使用了以下代码:
android.sourceSets.main.assets.srcDirs += ['src/extensions/assets/'+it]
答案 1 :(得分:2)
你可能会过度思考所需的工作。只需创建productFlavor
,然后定义风格assets.srcDirs
。现在我们可以坐下来让Android的gradle插件完成所有工作。
android {
//...
productFlavors {
blah {}
more {}
}
sourceSets {
blah {
assets.srcDirs = files(getFlavorConfig(it.name))
}
more {
assets.srcDirs = files(getFlavorConfig(it.name))
}
}
}
// simplified method for example
def getFlavorConfig(String str) {
return ["$projectDir.absolutePath/src/extensions/assets/first", "$projectDir.absolutePath/src/extensions/assets/second"];
}
在构建之后,我们的文件将在我们期望的位置:
$ ls app/build/intermediates/assets/blah/debug/
hello.txt world.txt
$ ls app/build/intermediates/assets/more/debug/
hello.txt world.txt
$ ls app/build/intermediates/assets/blah/release/
hello.txt world.txt
$ ls app/build/intermediates/assets/more/release/
hello.txt world.txt