2015-07-13 94 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" 
}