我正在开发一个通过REST API与服务器交互的Android应用程序。显然,我需要使用不同的URL来开发和发布版本。评论和取消评论代码非常繁琐且错误。
处理这种情况的最佳方法是什么?在gradle文件中使用不同的构建类型可以自动化该过程,但我不确定这是否是正确的方法。
构建类型的数量也有增加的可能性。测试,内部释放等。
答案 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"'
}
}
在这里,我有三种构建类型:标准debug
和release
,以及自定义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的功能