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

时间:2015-06-10 13:37:51

标签: android android-gradle

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

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

构建类型的数量也有增加的可能性。测试,内部释放等。

4 个答案:

答案 0 :(得分:68)

如果您使用的是Android Studio,请使用buildConfigField向您的BuildConfig课程添加自定义字段。

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。每个字段都在SERVER_URL上定义BuildConfig字段。

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

答案 1 :(得分:4)

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

请在 medium 上查看。 它涉及详细的解释。

答案 2 :(得分:0)

我有类似的问题,我使用

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

您需要导入

import com.commandsoftware.androidbookingapp.BuildConfig;

答案 3 :(得分:0)

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

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

然后在我的日志编写器中使用该布尔值。初始化URI时,您应该可以执行类似的操作。

我正在使用Eclipse。我无法肯定地说这可以在其他IDE环境中使用。 This answer表示它可能是仅限Eclipse的功能