types
简介
buildtypes 位于模块级build.gradle文件的Android{}代码块内,它是用来创建和配置构建类型的。新建一个项目在模块的buildTypes代码块中会默认生成debug和release两个版本。
代码块
这是我代码里的配置,大家可以按需所配。
/**
* APP模块下的build.greadle
*/
android {
//签名配置
signingConfigs {
release {
、、、、、、、、、、、、、
}
debug {
、、、、、、、、、、、、、
}
}
//构建类型配置
buildTypes {
//测试版本
debug {
/* 签名类型 */
signingConfig signingConfigs.debug
/* 是否开启代码混淆,默认false */
MinifyEnabled false
/* 是否应该生成可调试的apk */
debuggable true
/* 混淆规则配置文件 */
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
/* 自定义buildType */
buildConfigfield 'String', 'BASE_URL', '"http://api-debug.**/"'
}
//生产版本
release {
/* 签名类型 */
signingConfig signingConfigs.release
/* 是否开启代码混淆,默认false */
minifyEnabled false
/* 是否应该生成可调试的apk */
debuggable false
/* 移除无用的resource文件 */
shrinkresources true
/* 混淆规则配置文件 */
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
/* 自定义buildType */
buildConfigField 'String', 'BASE_URL', '"http://api-release.**/"'
}
//预生产版本
/* 从给定的构建类型复制所有属性 */
pre.initwith(release)
pre {
buildConfigField "String", "BASE_URL", "http://api-pre.**/"
matchingFallbacks = ['pre', 'debug', 'release']
}
}
}
如何调用自定义buildType
public static final String BASE_URL = BuildConfig.BASE_URL;
打包
在控制台输入
gradle assembleDebug
gradle assemblePre
gradle assembleRelease
会生成相应版本的apk。比如控制台输入gradle assembleRelease,会生成下图apk。
Android Studio 3.0 和 Gradle 3.0带来的问题。
在 Gradle 2.x 时代,如果 app 中定义了 pre 类型,而子模块中没有定义,是不会报错的。但在 Gradle 3.0 下,如果你的 app 包含了新的自定义的 buildType,而依赖库中却没有相应的自定义 buildType,则编译阶段就会报错。
解决方案一:
在子模块中同样定义一个空pre{}类型
解决方案二:
matchingFallbacks,它可以指定在子模块中没找到对应的构建类型时要加载哪个类型
看如下代码:
//预生产版本
/* 从给定的构建类型复制所有属性 */
pre.initWith(release)
pre {
buildConfigField "String", "BASE_URL", "http://api-pre.**/"
matchingFallbacks = ['pre', 'debug', 'release']
}
相关阅读
在Android开发中少不了输入框的使用,今天就输入框EditText进行详细的讲解,也是为了以后开发总结经验。本人在开发过程中要求对输入
Android O Launcher3-Workspace加载
一.简述: Launcher这里我们研究主要是Launcher3(Android O平台),各个手机公司自家的ROM Launcher,咱们也看不到,但是八九不离十啦,他
2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布。2016年6月,Android N正式命名为“牛轧糖” 本届I/O开
Android Freeline加速编译App方案 使用和总结
Freeline简介 在Android Studio还没推出Instant Run功能之前,每次修改Android 工程项目时都要将整个项目重新编译一次,然后再将资
一、SurfaceFlinger编译模块组成 码路径:frameworks/native/services/surfaceflingerSurfaceFlinger二进制分成surfaceflinger(main