Gradle系列之Android Gradle基础配置
原文发于微信公众号 jzman-blog,欢迎关注交流。
通过前面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相关的知识,关于 Gradle 及其插件相关知识请先阅读下面几篇文章:
- Gradle系列之初识Gradle
- Gradle之Groovy基础篇
- Gradle系列之构建脚本基础
- Gradle系列之认识Gradle任务
- Gradle系列之Gradle插件
- Gradle系列之Java Gradle插件
- Gradle系列之Android Gradle插件
上篇文章了解了 Android Gradle 插件的一下配置方法,记得刚开始接触 Android 中的 build.gradle 配置文件也是一脸懵逼,不知道各个配置项的具体含义,这篇文章将对 Android 开发中一些最基本的配置进行介绍,如果你有这方面的疑惑,相信这篇文章对你有一定收获
- 默认配置
- 配置签名信息
- 构建应用类型
- 使用混淆
- 启用zipalign优化
默认配置
defaultConfig 是 Android Gradle 配置文件中的一个配置块,defaultConfig 的类型是 ProductFlavor,如果没有自定义 ProductFlavor,则使用默认的 ProductFlavor 来配置 Android 工程,下面对 defaultConfig 中的一下配置属性进行介绍:
//默认的ProductFlavor配置块
defaultConfig {
//配置App的包名
applicationId "com.manu.base"
//配合App最低支持的Android系统版本,下面两种minSdkVersion的配置效果是一致的
minSdkVersion 19
<!--minSdkVersion 'KitKat'-->
//配置App基于哪个Android SDK开发
targetSdkVersion 26
//配置App的内部版本号,一般用于版本升级
versionCode 1
//配置App外部版本号,该版本号供用户查看
versionName "1.0"
//配置单元测试时使用的Runner
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//配置测试App的包名
testApplicationId "com.manu.androidgradleproject.test"
//使用指定的签名文件配置
signingConfig signingConfigs.release
}
配置签名信息
配置 App 签名信息的好处无非是防止 App 被恶意篡改,签名可保证 App 的唯一性且只有使用相同签名的后续升级包才能正常安装,在创建完签名文件之后,如果不做配置打包时每次都必须要指定签名文件的密码、别名等,一般 App 开发时在 denug 和 release 模式下时配置不同的签名文件。
第一步:创建签名证书文件,如下图所示填写相关信息:
第二步:使用 signConfigs 配置块配置已创建签名证书文件的相关信息如下:
//签名文件配置
signingConfigs {
release{
//签名证书文件
storeFile file("project.jks")
//签名证书文件密码
storePassword "111111"
//签名证书密钥别名
keyAlias "project_jks"
//签名证书中密钥密码
keyPassword "111111"
}
debug{
//默认情况下,debug模式下的签名已配置为Android SDK自动生成的debug签名文件证书
//默认签名文件位置:.android/debug.keystore
}
}
第三步:使用签名文件配置,在 android{} 下 defaultConfig{} 中使用上述配置,具体如下:
defaultConfig {
//...
//使用指定的签名文件配置
signingConfig signingConfigs.release
}
除了在 defaultConfig{} 中配置,还可以在分别在 denbug 或者是 release 模式下配置不同的签名文件,可在 buildTypes{} 中单独配置配置,具体如下:
buildTypes {
release {
signingConfig signingConfigs.release
//...
}
debug{
signingConfig signingConfigs.debug
//...
}
//...
}
构建应用的类型
Android Gradle 内置了两种构建类型 debug 和 release,两者区别是前者一般用在调试状态,后者一般用于正式发布状态,其他方面都一样,那么如何增加新的构建类型呢,可直接在 buildTypes{} 中添加要添加的类型即可,buildTypes 接收的参数是一个域对象,添加的构建类型都是 BuildType,所以可以通过 BuildType 的相关属性来配置构建类型,下面是 BuildType 的常见的一些配置属性:
buildTypes {
release {
//...
}
debug{
//配置签名
signingConfig signingConfigs.debug
//配置在当前构建类型下applicationId的后缀,构建生成Apk的包名会在applicationId的基础上添加后缀
applicationIdSuffix '.debug'
//配置是否生成一个可供调试的Apk
denbuggable true
//配置是否生成一个可供调试jni(c/c++)代码的Apk
jniDebuggable true
//是否启用proguard混淆
minifyEnabled true
//配置当程序中方法数超过65535个时,是否启用自动拆分多个dex的功能,
multiDexEnabled true
//配置proguard混淆使用的配置文件,可配置对个混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
//配置是否自动清理未使用的资源,默认为false
shrinkResources true
//开启zipalign优化(见下文)
zipAlignEnabled true
}
}
当在 buildTypes{} 中添加新的构建类型之后,Android Gradle 都会自动生成一个 SourceSet,构建 Apk 会从对应的 SourceSet 中进行构建,切记新构建类型的名称不能和已有的相同。且要在 src 目录下为新创建的构建类型添加源代码目录和资源文件等,在创建好构建类型的同时,Android Gradle 插件也会生成对应的 assemble 任务来用于构建该类型的项目,如 release 对应的是 assembleRelease,执行该任务会生成对应的 Apk.
使用混淆
代码混淆主要了增加反编译的难度,发布正式版 App 时一般都得进行代码混淆,实际上 Android SDK 下面已经提供了默认的混淆文件,具体位置在 Android SDK 下面的 tools/progrard 下面,里面的内容主要是一些最基本的不能混淆的内容,两个默认的混淆文件如下:
//没优化
proguard-android.txt
//已优化
proguard-android-optimize.txt
那么如何使用混淆呢,在 buildTypes{} 中对应的构建类型下设置 minifyEnabled 为 true 开启混淆,然后配置具体的混淆文件,具体如下:
buildTypes {
release {
//开启混淆
minifyEnabled false
//配置混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
//...
}
启用 zipalign 优化
zipalign 是 Android 提供的一个整理优化 apk 文件的工具,可在一定程度上上提高系统和应用的运行效率,更快的读取 apk 中的资源,降低内存的使用,开启 zipalign 优化只需要在 buildTypes{} 中对应的构建类型下开启 zipalign 优化即可,具体如下:
buildTypes {
release {
//开启zipalign优化
zipAlignEnabled true
//''
}
//...
}
这篇算介绍了 Android 开发中一些常见配置项的介绍。
可以关注公众号:零点小筑(jzman-blog),一起交流学习。
Gradle系列之Android Gradle基础配置的更多相关文章
- Gradle系列之Android Gradle高级配置
本篇文章主要在之前学习的基础上,从实际开发的角度学习如何对 Android Gradle 来进行自定义以满足不同的开发需求,下面是 Gradle 系列的几篇文章: Gradle系列之初识Gradle ...
- Gradle系列之Android Gradle插件
原文发于微信公众号 jzman-blog,欢迎关注交流. 通过前面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相关的知识,关于 Gradle 及其插件相关知识请先阅读下面几篇文章: ...
- Gradle系列之构建脚本基础
原文发于微信公众号 jzman-blog,欢迎关注交流. 前面两篇文章分别介绍了 Gradle 基础知识以及 Groovy 相关基础知识,这也是学习 Gradle 所必需了解的,文章链接如下:: Gr ...
- Gradle系列之初识Gradle
原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradl ...
- Android Gradle 构建工具(Android Gradle Build Tools)是什么?
转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...
- Gradle系列之认识Gradle任务
原文发于微信公众号 jzman-blog,欢迎关注交流. 前面几篇学习了 Gradle 构建任务的基础知识,了解了 Project 和 Task 这两个概念,建议先阅读前面几篇文章: Gradle系列 ...
- [Android Studio系列(五)] Android Studio手动配置Gradle的方法
1 问题 (1) android sutdio第一次打开一个工程巨慢怎么办? (2) 手动配置Gradle Home为什么总是无效? (3) 明明已经下载了Gradle,配置了gradle home, ...
- 【Gradle】自定义Android Gradle工程
自定义Android Gradle工程 defaultConfig默认配置 defaultConfig是Android对象中的一个配置项,负责定义所有的默认配置.一个基本的defaultConfig配 ...
- SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)
1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的 ...
随机推荐
- HBA卡常用命令
HBA卡信息查看 查看对应的PCI设备lspci | grep LSI 如下:对应的HBA卡命令为sas3ircu 如下:对应的HBA卡使用sas2ircu 查看LSI控制器类型和型号 sas2irc ...
- Jmeter 常用函数(11)- 详解 __TestPlanName
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 返回测试计划名称 语法格式 ${__T ...
- 5.oracle用户管理
一.创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用.create user 用户名 identified by 密码; ...
- 推断(inference)和预测(prediction)
上二年级的大儿子一直在喝无乳糖牛奶,最近让他尝试喝正常牛奶,看看反应如何.三天过后,儿子说,好像没反应,我可不可以说我不对乳糖敏感了. 我说,呃,这个问题不简单啊.你知道吗,这在统计学上叫推断. 儿子 ...
- 强化学习中的经验回放(The Experience Replay in Reinforcement Learning)
一.Play it again: reactivation of waking experience and memory(Trends in Neurosciences 2010) SWR发放模式不 ...
- .NetCore使用Redis,StackExchange.Redis队列,发布与订阅,分布式锁的简单使用
环境:之前一直是使用serverStack.Redis的客服端,今天来使用一下StackExchange.Redis(个人感觉更加的人性化一些,也是免费的,性能也不会差太多),版本为StackExch ...
- Docker 最常用的镜像命令和容器命令
本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份.熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像 ...
- Mysql 如何实现全文检索,关键词跑分
一.前言 今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快.但是听他 ...
- Oracle - Flashback standby after resetlogs on primary
一.概述 本文将给大家介绍主库使用rman做不完全恢复后,备库如何通过flashback,继续同步 二.正式实验 本次实验采用的是oracle 11g 单实例 + oracle 11g 单实例dg 1 ...
- python爬虫数据提取之bs4的使用方法
Beautiful Soup的使用 1.下载 pip install bs4 pip install lxml # 解析器 官方推荐 2.引用方法 from bs4 import BeautifulS ...