产品风味结构

Kai*_*arm 0 android android-productflavors

我有一个使用~30种产品口味的项目.除了"主要"代码之外,它们的味道并不多,只有一些独特的资源.由于有这么多,我想构建我的代码目录,使其更有条理:

  • SRC
    • 主要
      • java的
      • 水库
    • productFlavors
      • flavor1
        • java的
        • 水库

但是当它们处于与"main"文件夹不同的级别时,构建不会识别它们的味道.有什么方法可以让我的工作吗?

Com*_*are 5

我有一个使用~30种产品口味的项目

还有一个,你将匹配Baskin-Robbins原创的~31种口味.

但是当它们处于与"main"文件夹不同的级别时,构建不会识别它们的味道.有什么方法可以让我的工作吗?

您可以覆盖模块build.gradle文件中源的来源.虽然我没有为你的场景尝试它(仅用于使用Gradle构建Eclipse风格的项目),但这样的事情应该有效:

android {
    // lots of cool stuff here

    sourceSets {
        flavor1 {
            manifest.srcFile 'src/productFlavors/flavor1/AndroidManifest.xml'
            java.srcDirs = ['src/productFlavors/flavor1/java']
            aidl.srcDirs = ['src/productFlavors/flavor1/aidl']
            res.srcDirs = ['src/productFlavors/flavor1/res']
            assets.srcDirs = ['src/productFlavors/flavor1/assets']
        }

        // lather, rinse, repeat
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用固定模式src/productFlavors/.../(在哪里...是风味名称),你可以使用一些Groovy脚本来迭代一系列风味名称并相应地连接源集.