gpt4 book ai didi

android - Android Studio合并资源集

转载 作者:行者123 更新时间:2023-12-03 03:26:44 26 4
gpt4 key购买 nike

我有一个有多种口味的项目。所有资源都在src / main中定义,而某些资源在/ src / [flavour_name]中被覆盖。这一直很好。

但是,我现在需要自定义 flavor ,以便它们属于两个(或将来,更多)不同客户组之一。我需要以这种方式合并资源(其中->表示“被……覆盖”):

主要来源集->客户群-> flavor

我试过像这样在build.gradle中使用sourceSets:

sourceSets
{
NiceFlav.res.srcDirs = ['src/main/res', 'src/CLIENT_GROUP_1/res', 'src/NiceFlav/res']
}

希望CLIENT_GROUP_1中的资源将覆盖main中存在的main资源,最后,NiceFlav中可能存在或不存在的任何资源都将覆盖main或CLIENT_GROUP_1中的任何资源。但是不幸的是,在构建时,gradle只会抛出有关CLIENT_GROUP_1和/或NiceFlav中重复的任何资源的错误。

如何配置gradle,以便以所需的方式组合资源?

(编辑)
至少在默认的建议配置中,无法使用尺寸。如果创建多个维度,则最终会得到如下目录结构:
src/Main
src/NiceFlavor
src/NiceFlavorCLIENT_GROUP_1
src/NiceFlavorCLIENT_GROUP_2
src/OtherFlavor
src/OtherFlavorCLIENT_GROUP_1
src/OtherFlavorCLIENT_GROUP_2
...

并且我需要将CLIENT_GROUP_1和CLIENT_GROUP_2的所有资源放在每个变量文件夹中

我真正需要的是一个目录结构,如下所示:
src/Main
src/CLIENT_GROUP_1
src/CILENT_GROUP_2
src/NiceFlavor
src/OtherFlavor
...

然后,构建需要从Main中获取所有资源,覆盖在CLIENT_GROUP_1或CLIENT_GROUP_2中找到的所有资源(取决于该 flavor 所属的组),然后最终覆盖在单个 flavor 目录中找到的所有资源。

旁注,一种 flavor 将永远只属于一个CLIENT_GROUP,因此除了标准的调试/发行版之外,每种 flavor 都不需要多个构建变体。

最佳答案

我认为,您可以使用dimensions解决此问题
这是有关该主题的文章:
https://proandroiddev.com/advanced-android-flavors-part-2-enter-flavor-dimensions-4ad7f486f6

As example:

client1Dev

client1Staging

client1Production

client2Dev

client2Staging

client2Production


这里是开发者网站上的较长介绍: https://developer.android.com/studio/build/build-variants
希望这可以帮助

关于android - Android Studio合并资源集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078547/

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