一、gradlew配置
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "true"
minifyEnabled false
shrinkResources false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//debug版本不指定文件路径;如果需要则将次处代码放到debug之后
applicationVariants.all { variant ->
variant.outputs.all {
if (variant.buildType.name.equals('release')) {
// 自定义输出路径
variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "outputs")
outputFileName = "${((project.name != "app") ? project.name : rootProject.name)}_${defaultConfig.versionName}_${variant.productFlavors[0].name}_${releaseTime()}.apk"
println "文件路径:-----------------${project.rootDir.absolutePath + File.separator + "outputs"}"
println "文件名:-----------------${outputFileName}"
}
}
}
}
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//配置多版本内容,生成的配置信息会生成在BuildConfig文件中
flavorDimensions "app"
productFlavors {
// 开发使用地址
baserelease {
dimension "app"
buildConfigField "String", "SERVICE", '""'//地址 BuildConfig.SERVICE
buildConfigField "String", "BUILDTYPE", '"oppo"'//文件名称
}
// 测试使用地址
releasetest {
dimension "app"
buildConfigField "String", "SERVICE", '"http://192.168.1.116:8081/"'
buildConfigField "String", "BUILDTYPE", '"releasetest"'
}
//生产使用地址
releasetestbj {
dimension "app"
buildConfigField "String", "SERVICE", '"http://192.168.100.31:8081"'
buildConfigField "String", "BUILDTYPE", '"release"'
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
配置后可以看到多个版本:如图
二、java项目中使用
只列出请求地址的方式,其他配置内容可以效仿
//如果可以获取到配置的地址则使用配置的,否则使用配置的地址
public static final String sStarURL = TextUtils.isEmpty(BuildConfig.SERVICE) ? "http://192.168.1.1:2000/#/login" : BuildConfig.SERVICE;//地址配置