【发布时间】:2017-10-14 20:57:26
【问题描述】:
我在我开发的应用程序的 build.gradle 中配置了一个常量。 它是 API 调用的“端点”常量。 当我在开发环境中开发时,应用程序调用一个“端点”,当我在生产环境中开发时,应用程序调用另一个“端点”。 现在问题来了,当我为应用程序开发测试时,配置无法正确获取端点。 有人可以帮我吗?
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField STRING, API_URL, '"https://end-point-production/"'
}
debug {
buildConfigField STRING, API_URL, '"https://end-point-dev/"'
}
}
productFlavors {
ui_tests {
buildConfigField STRING, API_URL, '"http://end-point-tests/"'
}
}
public class BaseController {
// Service url.
protected static final String API_URL = BuildConfig.API_URL;
/**
* Crates a basic retrofit request.
*
* @return Retrofit request.
*/
public static Retrofit getRetrofit() {
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(5, TimeUnit.SECONDS);
client.setReadTimeout(15, TimeUnit.SECONDS);
client.setWriteTimeout(5, TimeUnit.SECONDS);
return new Retrofit.Builder()
.baseUrl(API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()))
.build();
}
}
@Before
public void setUp() throws Exception {
server = new MockWebServer();
server.start(8681);
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(5, TimeUnit.SECONDS);
client.setReadTimeout(15, TimeUnit.SECONDS);
client.setWriteTimeout(5, TimeUnit.SECONDS);
new Retrofit.Builder()
.baseUrl(API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()))
.build();
}
【问题讨论】:
标签: android android-gradle-plugin android-espresso android-productflavors