在开发过程中,打包上传应用商店的apk需要连接正式服务器,而在平时打包的时候,一般连接测试服务器,每一次手动设置挺麻烦的,所以
通常设置是这样的
//正式
//public static final String IP = "";
//public static final String API = "";
//测试
public static final String IP = "";
public static final String API = "";
使用哪一个就把哪一个放开,现在我们可以使用gradle配置两个服务器
首先要在项目目录下的gradle中添加打包的版本
app目录下build.gradle文件.png
在buildTypes标签下添加
buildTypes {
local {
//配置本地服务器
buildConfigField "String", "HOST", LOCAL_HOST
buildConfigField "String", "API", LOCAL_API
//显示log
buildConfigField "boolean", "LOG_DEBUG", "true"
signingConfig signingConfigs.hxtx
}
debug {
//配置测试服务器
buildConfigField "String", "HOST", DEBUG_HOST
buildConfigField "String", "API", DEBUG_API
//显示log
buildConfigField "boolean", "LOG_DEBUG", "true"
signingConfig signingConfigs.hxtx
}
release {
//配置正式服务器
buildConfigField "String", "HOST", RELEASE_HOST
buildConfigField "String", "API", RELEASE_API
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
minifyEnabled true
shrinkResources true //移除无用资源
debuggable false
zipAlignEnabled true //zipalign优化
signingConfig signingConfigs.hxtx
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 自定义输出配置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为SAAS_v1.0_2016-12-01_uerbt.apk
def fileName = "APK_${variant.flavorName}_${variant.versionName}_${releaseTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
//过滤掉unaligned的包
variant.assemble.doLast {
variant.outputs.each { output ->
println "-----------------------------------------"
println "aligned " + output.outputFile
println "unaligned " + output.packageApplication.outputFile
File unaligned = output.packageApplication.outputFile
File aligned = output.outputFile
if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) {
println "deleting " + unaligned.getName()
unaligned.delete()
}
}
}
}
}
}
然后在release 或者debug 里面添加
buildConfigField "String", "HOST", DEBUG_HOST
其中DEBUG_HOST字段需要在gradle.properties中配置
gradle.properties文件.png
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableAapt2=false
RELEASE_HOST=""
RELEASE_API=""
DEBUG_HOST=""
DEBUG_API=""
LOCAL_HOST=""
LOCAL_API=""
使用的时候直接使用
BuildConfig.HOST
就可以取到 buildConfigField "String", "HOST", DEBUG_HOST 对应的值
RELEASE_HOST | DEBUG_HOST | DEBUG_HOST
使用
BuildConfig.API
就可以取到对应的api的值
RELEASE_API | DEBUG_API | LOCAL_API
打包时只要选择对应的版本就好了
打包.png












网友评论