【Gradle 学习】(六)Android 的构建类型 buildTypes 签名配置
使用场景
默认情况下,Android Plugin 会自动给项目构建 debug 和 release 版本。两个版本的区别在于能否在安全设备(非 dev )上调试,以及 APK 如何签名。debug 使用通过通用的 name/password 对生成的密钥证书进行签名(为了防止在构建过程中出现认证请求)。release 在构建过程中不进行签名,需要自行签名。
在项目中可以根据不同的构建类型赋予不同的权限,比如,只在 debug 模式下才允许打印日志,只在 release 在进行混淆、签名,在不同的模式下使用不同的资源,在不同环境下使用不同的服务配置等。
创建 BuildTypes
自定义一个 BuildTypes 的格式为: 名称{}
这些配置是通过 BuildType 对象来完成的。默认情况下,debug 和 release 实例都会被创建。Android plugin 允许像创建其他 Build Type 一样自定义这两种类型。在 buildTypes 的 DSL 容器中进行配置:
android {
buildTypes {
debug {
applicationIdSuffix ".debug"
}
jnidebug {
initWith(buildTypes.debug)// 复制
packageNameSuffix ".jnidebug"
jnidebugBuild true
}
}
}
- 上面的实例 配置了默认的 debug 版本,定义了应用 id 后缀
- 创建了名为 jnidebug 版本,以 debug 配置作为默认配置(initWith 函数,复制 build类型的属性)
- jnidebug 版本添加了包名后缀,并且开启了JNI 组件的debug 功能
可以在 buildTypes {} 中创建新的 BuildTypes,并且可以通过 initWith()
或者直接使用闭包来配置
代码及资源集合
BuildTyps 可以用于添加特定的代码及资源,每个 Build Type 会有默认的 sourceSet,路径为 src/<buildTypeName>/
,比如 src/debug/java
。BuildType 名称不能是 main 或者 androidTest(它们是 plugin 内部实现的)。
这个路径是可以被修改的
android {
sourceSets.buildtypename.setRoot('路径')
}
虽然路径是有默认的,但是文件夹是不会自动创建的,需要手动创建,结构可以像 main 文件夹一样。创建 AndroidManifest.xml 文件 或者 java、res 文件夹。
Task
每个 Build Type 都会创建一个新的 assemble 任务。例如:assembleDebug。 当 debug 和 release 构建类型被预创建的时候,assembleDebug 和 assembleRelease 会被自动创建。同样,有了新的 buildType 也会对应创建 assembleJnidebug task,并且 assemble 会依赖 assembleJnidebug。
buildType 的属性和方法
常用属性
属性 | 描述 |
---|---|
applicationIdSuffix | 应用 id 后缀 |
name | build type的名字 |
versionNameSuffix | 版本名称后缀 |
minifyEnabled | 是否混淆 |
proguardFiles | 混淆文件 |
signingConfig | 签名配置 |
multiDexEnabled | 是否拆成多个Dex |
常用方法
方法 | 描述 |
---|---|
buildConfigField(type, name, value) | 添加一个变量生成 BuildConfig 类 |
consumerProguardFile(proguardFile) | 添加一个混淆文件进arr包 |
consumeProguardFile(proguardFiles) | 添加混淆文件进arr包 |
externalNativeBuild(action) | 配置本地的build选项 |
initWith(that) | 复制这个 build 类型的所有属性 |
proguardFile(proguardFile) | 添加一个新的混淆配置文件 |
proguradFiles(files) | 添加新的混淆文件 |
resValue(type, name, value) | 添加一个新的生成资源 |
setProguardFiles(proguardFileIterable) | 设置一个混淆配置文件 |
启用 proguard 混淆
可以为不同的 buildTypes 选择是否启用混淆,一般 release 发布版本是需要启用混淆的,这样别人反编译之后就很难分析你的代码,而我们自己开发调试的时候是不需要混淆的,所以 debug 不启用混淆。对 release 启用混淆的配置如下:
android {
buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
- minifyEnabled 为 true 表示启用混淆,对应的 task 也将自动创建
- proguardFile 是混淆使用的配置文件
proguard-android.txt
文件在 SDK 的路径下,使用 getDefaultProguardFile() 可以获取这些文件的完整路径。proguard-rules.pro
在 module 根目录下。
启用 zipAlign
这个也是比较简单的,同样也是在 buildTypes 里配置,可以为不用的 buildTypes 选择时候开启 zipAlign
android {
buildTypes {
release {
zipAlignEnabled true
}
}
}
配置应用签名
要为应用配置签名信息需要在 android DSL 设置 signingConfigs {...} ,再在 buildTypes 中配置 signingConfig 即可
android {
signingConfigs {
release {
storeFile file("release.keystore")
keyAlias "tina"
keyPassword "123456"
storePassword "123456"
}
debug {
...
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.debug
}
}
}
其中
- storeFile:签名证书文件
- keyAlias:别名
- keyPassword:key的密码
- storePassword:证书的密码
配好相关信息即可在 buildTypes 配置使用
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanejif
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
微信人名旁边有个图标有什么用
PHP中文网 03-11