2015-07-13 86 views
1

我正在尋找一種方式,包括口味動態生命週期Android插件gradle這個

要做到這一點,我嘗試包括與屬性來配置主要Android項目的子項目。 這是我的例子:

app 
|-> src 
| |-> flavor 
|   |-> build.gradle 
|-> build.gradle 
|-> settings.gradle 

應用程序/ settings.gradle

include ':src:flavor' 

應用/ src目錄/風味/的build.gradle

ext { 
    isFlavor = true 
} 

應用/的build.gradle

... 

android { 

    ... 

    productFlavors { 

     getAllprojects().each { project -> 
      if (project.ext.has("isFlavor")) { 
       def name = project.getName() 
       "$name" { 
        applicationId "com.example.app.$name" 
       } 
      } 
     } 
    } 

} 

這看起來很神奇......卜它不起作用! 因爲在gradle檢查子項目之前配置了Android,並且flavor.ext.isFlavor尚不存在。 如果我使用配置注入,Android吐在我的臉上,我不敢!

Android tasks have already been created 

我已經閱讀了stackoverflow,我必須在我的rootProject中創建我的屬性並在每個子項目中配置Android。

但在我的情況下,子項目不是項目,但味道..

有沒有人有一個想法,在子項目配置屬性,並使用他們在rootProject?

我現在搜索附近的apply from:功能..

PS:這是我與其他解決方案主線程:Gradle dynamic flavor

+0

這是不是很清楚你的要求。您可以使用app文件夾中的build.gradle配置風格,而不是使用風格中的另一個build.gradle。 –

+0

感謝您的關注。我已更新我的帖子。我正在嘗試動態添加口味。 – nsvir

回答

0

我只是用一個有條件的apply from:迫使生命週期的應用我的價值觀:

if (new File(project(":app").getProjectDir().getPath() + "/flavors.gradle").exists()) { 
    apply from: "flavors.gradle" 
}