gpt4 book ai didi

java - 如何从 build.gradle 更改 .java 文件中的某些值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:20 24 4
gpt4 key购买 nike

我的应用有多种风格。对于前。开发、阶段、生产风格。

因此,dev 将指向开发服务器 url、开发应用程序 ID 等,对于阶段和生产也是如此。对于我的 strings.xml 中存在的应用程序 ID,我可以使用以下代码替换它们 -

variant.mergeResources.doLast {
File valuesFile = file("${buildDir}/res/all/${variant.dirName}/values/values.xml")
println("Replacing app id in " + variant.dirName)
String content = valuesFile.getText('UTF-8')
def appid;
String variantDirName = variant.dirName;
if (variantDirName.contains("dev")) {
appid = '1234_dev'
} else if(variantDirName.contains("stage")) {
appid = '1234_stage'
} else if(variantDirName.contains("prod")) {
appid = '1234_prod'
} else {
appid = '1234_unknown'
}
content = content.replaceAll(/some_app_id/, appid)
valuesFile.write(content, 'UTF-8')
}

我的 strings.xml 在哪里 -

    <string name="app_id">some_app_id</string>

现在,服务器 url 作为常量存储在我的 Config.java 文件中-

public static final String BASE_URL = "http://dev.blahblah.com";

所以问题是如何根据不同的风格从我的 build.gradle 文件中更改 Config.java 中的这一行?

最佳答案

您可以像 Xavier 一样使用 BuildConfig。示例:

产品口味

productFlavors {
develop {
applicationId "com.dexode.cree.develop"
ext.enableCrashlytics = false

buildConfigField "String", "API_URL", "\"https://api.test.dexode.com/2.3\""
}
beta {
applicationId "com.dexode.cree.beta"
ext.enableCrashlytics = true

buildConfigField "String", "API_URL", "\"https://api.dexode.com/2.3\""
}
production {
ext.enableCrashlytics = true
buildConfigField "String", "API_URL", "\"https://api.dexode.com/2.3\""
}

现在您的 BuildConfig 看起来像:

public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.dexode.cree.develop.debug";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "develop";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0.0.0_debug";
// Fields from product flavor: develop
public static final String API_URL = "https://api.test.dexode.com/2.3";
}

以及代码中的用法:

RestAdapter.Builder builder = new RestAdapter.Builder().setEndpoint(BuildConfig.API_URL);

记得刷新文件BuildConfig的内容。 AndroidStudio 喜欢缓存文件。您可以点击文件 -> 同步

Documentation about Flavors

相关问题buildConfigField depending on flavor + buildType

关于java - 如何从 build.gradle 更改 .java 文件中的某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22498726/

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