想象一下这样一种情况:我需要有或没有广告的APK版本,有或没有CustomJarSDK,以及三个市场,GooglePlay,AmazonApps和SamsungApps。
在我完美的世界中,它只有7种口味:
在我完美的世界里,有一种方法可以将风味结合在一起,例如:
这可能吗?或者你被诅咒和被诅咒以拥有所有这些口味... ?????
答案 0 :(得分:1)
回答你的问题非常困难。这取决于哪种资源在任何风格上都不同。
目前您无法扩展风格或合并它们。
但是,您可以使用一些提示来改善您的项目。
例如,您可以将常见的源集资源用于不同的版本。
类似的东西:
+ App // module
|- src
|- common // shared srcDir
|- java
+ flavor1
|- java
+ flavor2
|- java
+ flavor3
+ flavor4
然后你可以像这样定义somenthing:
sourceSets {
flavor1.java.srcDir 'src/common/java'
flavor2.java.srcDir 'src/common/java'
flavor3.java.srcDir 'src/common/java'
}
在你的情况下,你应该评估口味:
可以使用公共块:
sourceSets {
flavor1.java.srcDir = ['src/common/java', 'src/flavor1/java']
flavor2.java.srcDir = ['src/common/java', 'src/flavor2/java']
flavor3.java.srcDir = ['src/common/java', 'src/flavor3/java']
}
每种风味可以使用另一种风味中定义的相同信号源 像这样的Somenthing:
flavor2{
java.srcDirs = sourceSets.flavor1.java.srcDirs
res.srcDirs = sourceSets.flavor1.res.srcDirs
resources.srcDirs = sourceSets.flavor1.resources.srcDirs
aidl.srcDirs = sourceSets.flavor1.aidl.srcDirs
renderscript.srcDirs = sourceSets.flavor1.renderscript.srcDirs
assets.srcDirs = sourceSets.flavor1.assets.srcDirs
}
同样每种风味都可以定义多个资源文件夹。例如:
android.sourceSets {
flavor1.res.srcDirs = ['src/main/res', src/main/res2']
}