Android StudioGradle 一键快速打包
转载请注明出处:https://blog.****.net/darling_R/article/details/83446413
在开发中,肯定会有测试包和正式包,进而就会有测试环境和正式环境(测试地址和正式地址),如何快速的自动切换呢,请往下看
这里使用buildConfigField巧妙的替换,操作如下:
android{
...
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
buildConfigField("boolean","LOG_DEBUG","false")
buildConfigField("String","Base_URL","\"http://www.releaseurl.com\"")
}
debug {
signingConfig signingConfigs.debug
buildConfigField("boolean","LOG_DEBUG","true")
buildConfigField("String","Base_URL","\"http://www.testurl.com\"")
}
}
...
}
这样配置之后,会在app/build/generated/source/buildConfig 目录下的BuildConfig 文件里自动添加 buildConfigField参数的第二个参数为变量,在项目里面就可以直接应用 BuildConfig.LOG_DEBUG 或者BuildConfig.Base_URL等来使用,
这里介绍一下buildCOnfigField的参数,第一参数是表示其类型,第二个是变量的字段名,第三个是参数的值,源码如下:
/**
* Adds a new field to the generated BuildConfig class.
*
* <p>The field is generated as: {@code <type> <name> = <value>;}
*
* <p>This means each of these must have valid Java content. If the type is a String, then the
* value should include quotes.
*
* @param type the type of the field
* @param name the name of the field
* @param value the value of the field
*/
public void buildConfigField(
@NonNull String type,
@NonNull String name,
@NonNull String value) {
ClassField alreadyPresent = getBuildConfigFields().get(name);
if (alreadyPresent != null) {
String message =
String.format(
"BuildType(%s): buildConfigField '%s' value is being replaced: %s -> %s",
getName(), name, alreadyPresent.getValue(), value);
issueReporter.reportWarning(Type.GENERIC, message);
}
addBuildConfigField(new ClassFieldImpl(type, name, value));
}
很容易就能看明白。
最后,打包的时候,就会自动赋值,正式包 就是release里面配置的值,测试包 就是debug里面配置的值,都不用每次都去更改标志位的值了,是不是很简单
最后,最后,一键打包,如下图。
assembleRelease 就是正式包
assembleDebug 就是测试包 调试包
双击就可以运行,等一会控制台就会出现BUILD SUCCESSFUL
说明打包成功了