我有一個項目,使用~30產品口味。除了「主要」代碼之外,風味對他們來說並不多,只是一些獨特的資源。既然有這麼多,我想構建我的代碼目錄,這樣使它更有條理:產品風味結構
- SRC
- 主要
- 的Java
- 資源
- productFlavors
-
個
- flavor1
- 的Java
- 資源
- flavor1
- 主要
但在構建時,他們在不同的級別比 「主」 文件夾不承認口味。有什麼辦法可以使這項工作?
我有一個項目,使用~30產品口味。除了「主要」代碼之外,風味對他們來說並不多,只是一些獨特的資源。既然有這麼多,我想構建我的代碼目錄,這樣使它更有條理:產品風味結構
但在構建時,他們在不同的級別比 「主」 文件夾不承認口味。有什麼辦法可以使這項工作?
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
文件。雖然我還沒有嘗試過您的方案(僅適用於構建使用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腳本遍歷一組風格名稱並相應地連接源代碼集。
嗯,我會嘗試,除了我得到 錯誤:(19,0)無法找到源集'flavor1'屬性'清單'。 我明白除了'java'屬性 – KairisCharm
好吧,我將res.srcDirs改爲resources.srcDirs,並且工作正常,但我確實需要一些清單。 – KairisCharm
@KairisCharm:這很奇怪。我剛剛添加了上面顯示的'sourceSets'閉包,在'productFlavors'閉包之後定義'flavor1',並且我沒有收到任何構建錯誤。 'resources.srcDirs'將用於Java資源,而不是Android資源。感覺就像你不在'android'項目中構建這個一樣。 – CommonsWare