Gradle - 继承产品风味

时间:2015-07-23 08:55:14

标签: android gradle

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

productFlavors {
    xxx {
        applicationId 'com.xxx'
    }
    yyy {
        applicationId 'com.yyy'
    }
    zzz {
        applicationId 'com.zzz'
    }
}

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

        +------->xxx
        |           
main----+------->yyy
        |           
        +------->zzz

因此,当我构建xxx时,Gradle会捆绑src/mainsrc/xxx文件夹中的内容。

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

        +------->xxx           
        |                      
main----+------->yyy------->zzz

换句话说,我希望zzz使用yyy的资源以及main。 Gradle可以这样做吗?

2 个答案:

答案 0 :(得分:2)

这可能取决于你想要在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 {}
}

P.S。为此https://code.google.com/p/android/issues/detail?id=183350

创建了功能请求

答案 1 :(得分:1)

我已经回答了这个in another thread。我将在这里复制并粘贴我的答案,希望它对您有所帮助。

我在gradle中寻找类似的东西并找到了Multi-flavor variants。我有一个应该有A和B版本的应用程序,每个版本都有dev和pro环境,所以我最终得到了这个:#/ p>

flavorDimensions 'app', 'environment'

productFlavors {
    versionA {
        flavorDimension 'app'
    }
    versionB {
        flavorDimension 'app'
    }
    pre {
        flavorDimension 'environment'
    }
    pro {
        flavorDimension 'environment'
    }
}

在我的构建变体中,我有versionAPreDebug,versionAPreRelease,versionBPreDebug,versionBPreRelease等。我认为你需要的是这样的。