产品风味结构
Product Flavor structure
我有一个项目使用了大约 30 种产品口味。除了 "main" 代码之外,flavors 没有太多内容,只是一些独特的资源。由于有这么多,我想像这样构建我的代码目录以使其更有条理:
- 来源
- 主要
- java
- 资源
- 产品口味
- 味道1
- java
- 资源
但是当它们位于与 "main" 文件夹不同的级别时,构建无法识别它们。有什么方法可以使它工作吗?
I have a project that uses ~30 product flavors
再加一个,你就会匹配 Baskin-Robbins' original ~31 flavors。
But the build doesn't recognize the flavors when they are on a different level than the "main" folder. Is there any way I can make this work?
您可以在模块的 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
}
}
如果您坚持 src/productFlavors/.../
的固定模式(其中 ...
是风味名称),您可能可以使用一些 Groovy 脚本来迭代数组风味名称并相应地连接源集。
我有一个项目使用了大约 30 种产品口味。除了 "main" 代码之外,flavors 没有太多内容,只是一些独特的资源。由于有这么多,我想像这样构建我的代码目录以使其更有条理:
- 来源
- 主要
- java
- 资源
- 产品口味
- 味道1
- java
- 资源
- 味道1
- 主要
但是当它们位于与 "main" 文件夹不同的级别时,构建无法识别它们。有什么方法可以使它工作吗?
I have a project that uses ~30 product flavors
再加一个,你就会匹配 Baskin-Robbins' original ~31 flavors。
But the build doesn't recognize the flavors when they are on a different level than the "main" folder. Is there any way I can make this work?
您可以在模块的 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
}
}
如果您坚持 src/productFlavors/.../
的固定模式(其中 ...
是风味名称),您可能可以使用一些 Groovy 脚本来迭代数组风味名称并相应地连接源集。