2015-11-30 64 views
0

我有一個項目,使用~30產品口味。除了「主要」代碼之外,風味對他們來說並不多,只是一些獨特的資源。既然有這麼多,我想構建我的代碼目錄,這樣使它更有條理:產品風味結構

  • SRC
    • 主要
      • 的Java
      • 資源
    • productFlavors
      • flavor1
        • 的Java
        • 資源

但在構建時,他們在不同的級別比 「主」 文件夾不承認口味。有什麼辦法可以使這項工作?

回答

3

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腳本遍歷一組風格名稱並相應地連接源代碼集。

+0

嗯,我會嘗試,除了我得到 錯誤:(19,0)無法找到源集'flavor1'屬性'清單'。 我明白除了'java'屬性 – KairisCharm

+0

好吧,我將res.srcDirs改爲resources.srcDirs,並且工作正常,但我確實需要一些清單。 – KairisCharm

+0

@KairisCharm:這很奇怪。我剛剛添加了上面顯示的'sourceSets'閉包,在'productFlavors'閉包之後定義'flavor1',並且我沒有收到任何構建錯誤。 'resources.srcDirs'將用於Java資源,而不是Android資源。感覺就像你不在'android'項目中構建這個一樣。 – CommonsWare