Gradle - 继承产品风味

11

我有三种产品口味,不包括主要的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能够使用yyymain的资源。Gradle可以实现这一点吗?

可能是Have a product flavor be a child of another的重复问题。 - mixel
请查看我的答案,链接在这里:https://dev59.com/m18f5IYBdhLWcg3wHPiN#41903586 - mixel
2个回答

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 {}
}

P.S. 我们已经为此创建了一个功能请求:https://code.google.com/p/android/issues/detail?id=183350


3
我已在另一个线程中回答了这个问题。我将在此处复制粘贴我的答案,希望对你有所帮助。
我正在寻找 Gradle 中类似的东西,并找到了多品味变体。 我有一个应用程序,应该有版本 A 和 B,每个版本都有 dev 和 pro 环境,所以我最终在我的 Gradle 文件中写下了这个。
flavorDimensions 'app', 'environment'

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

在我的构建变体中,我有 versionAPreDebug、versionAPreRelease、versionBPreDebug、versionBPreRelease 等版本。我想你需要的是这样的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接