gpt4 book ai didi

android - 如何指定每种风格的 buildType sourceSets?

转载 作者:可可西里 更新时间:2023-11-01 19:03:25 25 4
gpt4 key购买 nike

我有 2 种风格的应用程序,每种都有自己的 google maps (v1) key 用于调试和发布(意味着总共有 4 个 key )。所以我想知道我是否可以根据 buildType 和 productFlavor 指定 sourceSets。本质上,我想知道如何实现这样的目标:

src
├── debug
│   └── flavor1
│   └── res
│ └── values
│ └── gmaps_key.xml
├── release
│ └──flavor1
│ └── res
│ └── values
│ └── gmaps_key.xml

gradle 将在何处使用 src/<currentBuldType>/<currentProductFlavor>/*作为其 sourceSet 的一部分。

本质上我想要它,这样如果我运行 gradle assembleFlavor1Debug它将包括 src/main/* 下的所有内容, src/flavor1/* , 和 src/debug/flavor1/* .

我的 build.gradle 非常简单:

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.5.0'
}
}

apply plugin: 'android'

android {
compileSdkVersion 8

productFlavors {
flavor1 {
packageName 'com.flavor1'
}
flavor2 {
packageName 'com.flavor2'
}
}
}

有什么想法吗?或者也许有更好的方法?

最佳答案

我碰巧因为对我的回答的评论而回到这个问题上,并意识到这个答案是多余的(仍然比公认的更好,甚至更好)。对于每个 productFlavor 和 buildType,组合和单独的源集已经存在。即 src/{buildType}src/{productFlavor}src/{productFlavor}{buildType} 是已经可用的源文件夹。

本质上,OP 所需要做的就是将资源放入 src/flavor1Debug 中,这相当于 OP 设想的 src/debug/flavor1 .

旧答案:我已经用 buildConfig 做了类似的事情,但希望它应该与 sourceSets 一起工作。

基本上,您在变量中的 productFlavors 级别定义通用内容,并在向下移动时不断添加内容。

productFlavors {
def common = 'src/main'

flavor1 {
def flavor = 'src/main/flavor1'
buildTypes {
debug {
sourceSets {
res.srcDirs = [ common + ',' + flavor + ',' + 'src/main/debug'
}
}

release {
sourceSets {
res.srcDirs = [ common + ',' + flavor + ',' + 'src/main/release'
}

}
}
}

我还没有测试过这个。我认为您可能需要使用 android.sourceSets 而不仅仅是 sourceSets

我还需要为 productFlavors 定义单独的资源,因此我在构建文件的后期使用了单独的语句。像这样:

android.sourceSets.flavor1 {
res.srcDirs = ['flavor_resources/flavor1/res']
}

如果需要,您应该可以使用 android.sourceSets.flavor1.debug

另请注意,根据 Android Gradle user guide ,使用 srcDir 将目录添加到默认源并使用 srcDirs 替换它们。

关于android - 如何指定每种风格的 buildType sourceSets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119342/

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