2016-07-22 84 views
1

我有一個項目有很多風味,每種風味我有一個配置文件,指定哪些資產包括。Gradle:動態添加資產文件夾

這裏是我到目前爲止有:

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-資產」: 「fontfolder1」, 「fontfolder2」]

在這一行

variant.assets.srcDirs += ['src/extensions/assets/'+it] 

我要添加目錄到香味的資產。有任何想法嗎?

回答

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 
+0

謝謝你的答案。問題是,味道是由服務器端腳本(通過修改build.gradle文件)生成的。爲了按照你的建議去做,我需要編輯我不想做的腳本。 –