Android Studio:根据构建类型切换 URL? (用于调试/发布中的测试)

Android Studio: Switching a URL depending on buildtype? (used for testing in debug /release)

我一直在阅读有关变体和构建类型的内容,但我不知道我是否理解正确,但我想存储一个 URL 用于本地主机(测试)和一个用于生产(实时站点)在互联网上)。

我需要根据构建类型来切换它们。这是正确的方法吗?或者还有其他选择吗?

谁有小例子吗?

有没有一种方法可以将此信息存储在一个我不需要提交给源代码管理的文件中?我正在使用 gradle.properties 文件存储一些 gradle 用于签名的密码。这很好用,因为我不在版本控制中共享此文件。

我对正确的使用方法和实现方法有点困惑。

有什么想法吗?

您可以使用 BuildConfig 为每个 BuildType

提供不同的 URL
buildTypes {
    debug {
        buildConfigField "String", "SERVER_URL", '"http://someurl/"'
    }
    release{
        buildConfigField "String", "SERVER_URL", '"http://someotherurl/"'
    }
}   

每次将项目与 gradle 文件同步时,都会自动生成 BuildConfig。 在您的代码中,您可以像这样访问 URL:

BuildConfig.SERVER_URL

如果您不想提交这些 URL,您可以将它们存储在您的 gradle.properties 中,就像您的密码等一样,并在 build.gradle 中引用它们。

buildConfigField "String", "SERVER_URL", serverurl.debug
   buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        buildConfigField "String", "BASE_URL", '"url1"'
        debuggable false

    }

   debug {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        buildConfigField "String", "BASE_URL", '"url2"'
        debuggable true

 }

您需要在 gradle 中执行此操作,并在同一个 phone 中制作 运行 两个应用程序(发布和调试)只需添加

applicationIdSuffix ".debug"

在调试部分。由于包名称会有所不同。这对我有用。

我正在用图像分享过程,因为我们需要额外注意 java 的 escape sequence,同时在 [=10] 中添加 API URL =] 否则 URL 将无法在 BuildConfig 中正确生成并产生 Cannot resolve ... 错误,如下图所示 -

所以正确的解决方案是添加 URL 服从转义序列,如下图-