gpt4 book ai didi

android - Android Gradle 中每种风格的代码路径

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:18 26 4
gpt4 key购买 nike

我有 2 个 buildType(调试、发布)和 2 个 productFlavors(product1、product2)。我想为每个 buildType 和 productFlavors 定义一个 buildConfigField。 buildConfigField 是应用程序从服务器下载数据的 url,它会随着每个 productFlavor 和 buildTypes 而变化。

现在,我有:

buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'

}
product2 {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'

}
}

但是我想要这样的东西:

buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api1.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api2.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
}

我怎样才能做到这一点?

更新:

每个 URL_BASE 都有不同的模式,因此我无法对 URL 进行分组。一个可行的解决方案是在不同的构建类型中添加 2 种风格的 url 基础,并在风格中选择正确的一种。

buildTypes {
debug {
debuggable true
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.deb.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.debug.com"'

}
release {
debuggable false
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.release.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.release.com"'
}
}

productFlavors {
product1 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT1 + "/v1"'
}
product2 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT2 + "/v1"'
}
}
}

更新 2

如果您需要在 gradle 中添加资源,例如“KEY_MAP”,解决方案在此 page 中.

最佳答案

Build Type 不是 Product Flavor 的一部分,反之亦然。变体是根据构建类型和产品风格计算的。使用它,您可以使用产品风格和构建类型创建具有一致格式的扩展(选项 1)或属性(选项 2)。

选项 1

ext.product1_release_base_url = 'http://baseurl.myproduct/public'
ext.product2_release_base_url = 'http://baseurl.yourproduct/secure'
ext.product1_debug_base_url = 'http://debugurl.myproduct/test'
ext.product2_debug_base_url = 'http://yourproduct/debug'

android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
}
}
productFlavors {
product1 {}
product2 {}
}
}

project.android.applicationVariants.all {variant ->
def url = project.ext."${variant.flavorName}_${variant.buildType.name}_base_url"
variant.buildConfigField('String', 'URL_BASE', "\"${url}\"")
}

选项 2

在 gradle.properties 中

product1_release_base_url = 'http://baseurl.myproduct/public'
product2_release_base_url = 'http://baseurl.yourproduct/secure'
product1_debug_base_url = 'http://debugurl.myproduct/test'
product2_debug_base_url = 'http://yourproduct/debug'

在 build.gradle 中

android {
buildTypes {
release {}
debug {}
}
productFlavors {
product1 {}
product2 {}
}
}

project.android.applicationVariants.all {variant ->
def url = project."${variant.flavorName}_${variant.buildType.name}_base_url"
variant.buildConfigField('String', 'URL_BASE', "\"${url}\"")
}

关于android - Android Gradle 中每种风格的代码路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30660426/

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