Gradle - 继承产品风味

Ego*_*uba 7 android gradle

我有3种产品口味,不包括main:

productFlavors {
    xxx {
        applicationId 'com.xxx'
    }
    yyy {
        applicationId 'com.yyy'
    }
    zzz {
        applicationId 'com.zzz'
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解,这些产品风格继承了main资源,它看起来像这样:

        +------->xxx
        |           
main----+------->yyy
        |           
        +------->zzz
Run Code Online (Sandbox Code Playgroud)

所以,当我建立xxx,从摇篮捆绑的东西src/mainsrc/xxx文件夹.

现在,我需要它看起来像这样:

        +------->xxx           
        |                      
main----+------->yyy------->zzz
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要zzz使用yyy的资源以及main.Gradle可以这样做吗?

Kir*_*yov 5

这可能取决于您到底想在 zzz 中“覆盖”什么。在我的项目中,我也需要 ProductFlavor 继承。但我只需要覆盖清单。我使用自定义 AndroidManifest.xml 创建了 zzz 目录,并在 build.gradle 中将其他 zzz src 路径更改为 yyy:

sourceSets {
    zzz.java.srcDirs = ['src/yyy/java']
    zzz.res.srcDirs = ['src/yyy/res']
    ...
    ...
}

productFlavors {
   xxx {}
   yyy {}
   zzz {}
}
Run Code Online (Sandbox Code Playgroud)

PS 为此创建了功能请求https://code.google.com/p/android/issues/detail?id=183350