我有一个Android应用程序,在生产中使用时使用某个URL与我们的服务器进行通信。我想在调试时能够使用不同的URL,这样我就可以在我的机器上对服务器的本地实例运行应用程序。
如何在不手动编辑网址的情况下执行此操作?
答案 0 :(得分:4)
使用Android Studio,您可以定义构建变体,并在这种情况下定义字符串:
插件版本大于0.7.x(当前方法)
android {
buildTypes {
debug {
buildConfigField "int", "FOO", "42"
buildConfigField "String", "FOO_STRING", "\"foo\""
}
release {
buildConfigField "int", "FOO", "52"
buildConfigField "String", "FOO_STRING", "\"bar\""
}
}
}
插件版本低于0.7(旧)
android {
buildTypes {
debug {
buildConfig "public final static int FOO = 42;"
}
release {
buildConfig "public final static int FOO = 52;"
}
}
}
您可以使用BuildConfig.FOO
android {
buildTypes {
debug{
resValue "string", "app_name", "My App Name Debug"
}
release {
resValue "string", "app_name", "My App Name"
}
}
}
您可以使用@string/app_name
或R.string.app_name
来源:https://stackoverflow.com/a/17201265/1096905(所有积分给他,我只是复制和粘贴)
答案 1 :(得分:0)
如果您使用的是针对Eclipse的Android开发工具,请查看BuildConfig.DEBUG。在When does ADT set BuildConfig.DEBUG to false?
进行了一些讨论答案 2 :(得分:-1)
您可以创建一个为您生成网址的实用工具类。扩展Robin Ellerkmann在我之前提到的内容。
public class UrlGenerator{
private static final String STAGIN_URL = "http://www.statingurl.com/";
private static final String PRDOUCTION_URL = "http://www.productionurl.com/";
private static final boolean DEBUGGING = true;
private static String getBaseUrl(){
if(DEBUGGING)
return STAGING_URL;
else
return PRODUCTION_URL;
}
public static String getLoginUrl(){
return getBaseUrl() + "login";
}
}
然后在整个应用中使用类似
的内容String loginRequestUrl = UrlGenerator.getLoginUrl();
这样就可以在你的实用程序类中进行管理。
答案 3 :(得分:-2)
在代码中使用全局DEBUGGING布尔变量和if / else语句。
private boolean DEBUGGING = true;
if (DEBUGGING) {
//Use local machine url here
} else {
//Use real url here
}