gpt4 book ai didi

android - 如何合并多个 sourceSet

转载 作者:行者123 更新时间:2023-11-30 02:28:23 32 4
gpt4 key购买 nike

我正在尝试从 Eclipse/ANT 迁移到 Android Studio/Gradle。我们当前的 ant-build 支持 N 个客户(build-targets),一个客户由三元组皮肤/玩家/客户定义。每个皮肤/玩家/客户都可能包含src、资源、 Assets 、...

在 Gradle 中建模的最佳方式是什么?

我目前为每个客户创建一个 productFlavor,如下所示

productFlavors {
cust1{
applicationId='com.xyz.cust1'
customer="cust1"
skin="skinX"
player="playerA"
}
cust2{
applicationId='com.xyz.cust2'
customer="cust2"
skin="skinY"
player="playerB"
}
}

但是我在以紧凑的方式定义相应的 sourceSet 时遇到了问题。

我可以这样写

sourceSets.cust1 {
java.srcDir('pool/playerA/src')
res.srcDir('pool/skinX/res')
res.srcDir('pool/playerA/res')
res.srcDir('pool/cust1/res')
assets.srcDir('pool/playerA/assets')
assets.srcDir('pool/skinX/assets')
jniLibs.srcDir('pool/playerA/libs')
}

对于每个客户,但这会导致 N 个几乎相同的源集

我更愿意有一个单一的、参数化的、像

这样的 sourceSets
sourceSets {
java.srcDir('pool/${player}/src')
res.srcDir('pool/${skin}/res')
res.srcDir('pool/${player}/res')
res.srcDir('pool/${customer}/res')
assets.srcDir('pool/${player}/assets')
assets.srcDir('pool/${skin}/assets')
jniLibs.srcDir('pool/${player}/libs')
}

这可能吗?

一种替代方法是为每个玩家、皮肤和客户创建一个 sourceSet,并通过将主 sourceSet 与玩家、皮肤和客户的 sourceSet 组合来为 productFlavor 创建一个 sourceSet

输入赞赏!

最佳答案

我会调查 flavor dimensions (以前称为 flavor 组,也称为多味变体)。

使用这些,您可以为皮肤、玩家和客户设置三个 flavor 维度。每个皮肤在 skin 维度中获得一个 productFlavor,每个玩家在 player 维度中获得一个 productFlavor,并且每个customer 在 customer 维度中获取 productFlavor

然后您将执行诸如 assembleSkinxPlayeraCust1Debug 之类的任务,该任务将从 skinxplayeracust1 构建应用程序, 和 debug 源集。

关于android - 如何合并多个 sourceSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620746/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com