我的Android项目有两种口味,一种用于测试服务器,另一种用于生产。我将URL存储在字符串资源中,因此我可以根据我选择编译的风格访问正确的URL。通常我需要在一天内创建多个apk文件,每次都为两个服务器创建。
每次运行我的项目或从Build菜单构建apk时,有没有办法创建两个apk文件?
答案 0 :(得分:9)
如果你有这样的事情:
TIdHTTP::Request::AcceptCharSet
您只需在Gradle项目中运行汇编
你可以找到所有不同的apks build / outputs / apk
希望这次我会更有帮助
答案 1 :(得分:2)
Mastering "Product Flavors" on Android
您唯一需要做的就是在每种产品口味中定义它:
android {
productFlavors {
devel {
applicationId "zuul.com.android.devel"
}
prod {
applicationId "zuul.com.android"
}
}
}
根据风格向多个主机发送请求 和以前一样,您必须在产品风味配置字段中包含一些参数。
android {
productFlavors {
devel {
applicationId "zuul.com.android.devel"
buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"'
}
prod {
applicationId "zuul.com.android"
buildConfigField 'String', 'HOST', '"http://api.zuul.com"'
}
}
}
作为一个例子,我们将尝试向您展示如何将其与Retrofit集成以向适当的服务器发送请求,而无需根据风格处理您指向的服务器。在这种情况下,这是Zuul Android应用程序的摘录:
public class RetrofitModule {
public ZuulService getRestAdapter() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(BuildConfig.HOST)
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
return restAdapter.create(ZuulService.class);
}
}
正如您所看到的,您只需使用BuildConfigclass来访问您刚刚定义的变量。
答案 2 :(得分:1)
您可以在Gradle中使用此命令行:
./gradlew assemble
或者你可以分别为调试或发布生成所有口味的
./gradlew assembleDebug
./gradlew assembleRelase