Gradle编译打包编译打包Android apk详细介绍详细介绍
Gradle编译打包编译打包Android apk详细介绍详细介绍
理解Gradle构建过程,解读Android Gradle插件的配置
阅读本文一定是要使用过Gradle生成apk,文中不会讲如何安装运行Gradle,如有需要可先看文末的参考文章。
APK包是一个ZIP压缩包,从Java源代码、资源文件到生成这个APK,经过了编译打包一系列特定的过程,SDK文档
(/docs/tools/building/index.html)中找到。而这一系列特定的过程,重复繁琐,构建工具(build tool)就是来流程化这些过
程,解放你的双手。Ant作为apk早期的构建工具,构建过程显得很直观,像配置;Gradle可以方便地配置,但更像脚本,可
以编程。
理解理解Gradle构建构建
1.简单理解构建工具简单理解构建工具
从一个程序员的角度,你该如何编写代码来自动化你的apk生成过程呢?首先得知道你需要的SDK、NDK在什么位
置,Android工程有几个库工程,它们的Java源代码、资源文件分别有哪些?命令行的输入参数肯定无法满足需求,那自然而
然想到配置文件。因此你的自动化工具就是解析这些配置文件,按照生成apk文件要求执行的程序。Gradle就是这样的工具程
序,配置文件就是你常见的settings.gradle,build.gradle,不过他还提供了更多的功能,如依赖管理,流程控制,还有插件机制
来定制你的生成过程。
Gradle的编程语言是Groovy,其需要的配置文件支持Groovy。Groovy语言像Java一样是基于JVM的,而且能够很好的支持
Java,因此可以用Java代码编写扩展插件,像普通编程一样来写配置文件,而不用像Ant一样用xml来编写配置逻辑。
2.Groovy
Groovy的语法,把自己的代码缩略的看上去像脚本,本人也只是看了一点点文档,列出我们常用的介绍一下:
首先Groovy是面向对象的动态语言
((1)语句的末尾可省略分号)语句的末尾可省略分号
((2)变量定义可以用)变量定义可以用def,也可以直接使用,也可以直接使用
((3)函数定义可以用)函数定义可以用def,也可以不用(有返回值声明也可),也可以不用(有返回值声明也可)
函数可省略参数类型函数可省略参数类型
函数调用可省略括号函数调用可省略括号
来看个例子:
println 'Hello'
int power(int n) { 2**n }
println "2^6==${power(6)}"
第一行输出字符串Hello,第二行定义一个函数,第三行输出函数调用值,双引号中间的${}可被解析成表达式运行。
((4))List和和Map类型类型
List实现就是Java的java.util.ArrayList,变量由[]包围,用逗号分隔,比如
def heterogeneous = [1, "a", true] //其元素可以是任何对象
Map的实现是java.util.LinkedHashMap,也是由[]包围,用逗号分隔,其中的键值对是key:value形式,如:
def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']
assert colors['red'] == '#FF0000' //取值可以[key]或者.key的形式
assert colors.green == '#00FF00'
((5)闭包)闭包(Closures))
闭包我的理解类似C里的函数指针,或者说函数对象,可以像函数一样调用的对象
{ [closureParameters -> ] statements }
例子
def testClosure = {int arg1, String arg2 ->//def可省略,参数可省略,默认有it,当只有->表示没有参数
println "arg2:${arg2}" //执行的代码,返回值是最后一句,也可以用return
}
评论0