Android: 管理不同的服务器 URL 用于开发和发布

Android: Managing different server URL for development and release

我正在开发一个 Android 应用程序,它通过 REST API 与服务器交互。显然我需要为开发和发布版本使用不同的 URL。注释和取消注释代码非常繁琐且容易出错。

处理这种情况的最佳方法是什么?在 gradle 文件中使用不同的构建类型可以使过程自动化,但我不确定这是否是正确的方法。

也有可能增加构建类型的数量,即。测试、内部发布等

我遇到了类似的问题,我使用

解决了它
if (BuildConfig.DEBUG) { } 

您需要导入

import com.commandsoftware.androidbookingapp.BuildConfig;

如果您使用的是 Android Studio,请使用 buildConfigField 将自定义字段添加到您的 BuildConfig class.

buildTypes {
        debug {
          buildConfigField "String", "SERVER_URL", '"http://test.this-is-so-fake.com"'
        }

        release {
          buildConfigField "String", "SERVER_URL", '"http://prod.this-is-so-fake.com"'
        }

        mezzanine.initWith(buildTypes.release)

        mezzanine {
            buildConfigField "String", "SERVER_URL", '"http://stage.this-is-so-fake.com"'
        }
    }

在这里,我有三种构建类型:标准 debugrelease,以及自定义 mezzanine 一种。每个在 BuildConfig.

上定义一个 SERVER_URL 字段

然后,在 Java 代码中,您只需引用 BuildConfig.SERVER_URL。该字段的值将基于您用于构建特定版本应用程序的构建类型。

我在写入 logcat 时遇到了类似的问题。如果应用程序使用调试密钥签名,我想写所有消息,否则写几乎 none。我用这行代码解决了问题:

boolean showAllMessages = ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0);

然后在我的日志编写器中使用该布尔值。当您初始化 URI 时,您应该能够做类似的事情。

我正在使用 Eclipse。我不能肯定地说这将适用于其他 IDE 环境。 This answer 暗示它可能是 Eclipse 独有的特性

可以在应用 build.gradle 中使用 ProductFlavours 进行管理。 ProductFlavours 将管理不同的 URL 即。 开发发布。

请在medium上看看。 里面有详细的解释。