gradle实践系列:android gradle插件(1)
一. android gradle插件基础
1.插件概览
用android studio新建一个工程,我们能看到studio默认给生成了三个重要的gradle文件,如图所示:
1) setting.gradle
|
这个include语句表示项目包含的子目录,如果我们引用了其他模块或者库,也会显示在后面,例如,我们引用了ox库,那么setting.gradle是这样的
|
2).根目录下的build.gradle
|
gradle 默认是没有集成android-gradle插件的,google公司开发并提供了这个anroid-gradle插件,第一行的buildscript语句块告知gradle脚本从哪里去下载android-gradle插件。
Jcenter 是一个类似于mavenCentral的资源仓库,它使用CDN进行分发,速度相对较快,并且使用htttps进行传输。
allprojects语句块表示,如果没有特别的申明,后续依赖的库默认使用的仓库位置
task语句块定义了一个新的任务,这个任务的作用是删除编译过程中产生的文件。这个任务可以在gradle构建中被调用。
3). app 目录下的build.gradle
|
apply plugin语句将android-gradle插件添加到构建系统,这样就可以在gradle文件中使用android-gradle定义好的属性和方法。android-gradle插件的唯一标识是com.android.application。
dependencies语句块申明了构建过程中依赖的库。fileTree表示将app目录下的libs目录中所有jar文件添加到classpath;project表示构建app前需要先构建ox,也就是app构建依赖于ox库的构建
android语句块申明了一些常用的构建属性值,它的所有属性由android DSL定义
- compileSdkVersion 编译android项目使用的SDK版本
- buildToolsVersion build工具版本
- applicationId 包名
- minSdkVersion 最低兼容SDK版本
- targetSdkVersion 目标SDK版本
- versioncode app版本号,用于升级
- versionname app版本信息,用于显示
- buildTypes 打包时候混淆相关
关于compileSdkVerison , targetSdkVersion , minSdkVersion区别可以参考 :
compileSdkVersion , targetSdkVersion 和 minSdkVersion
android studio 提供了gradle tool插件,可以用图形化的方式编辑这些属性。
关于gradle 版本 和 gradle tool版本关系,可以参考:
2.执行gradle构建
我们不需要手动去安装gradle,android-gradle插件提供了gradle-wrapper去解决gradle下载和构建版本一致性问题。
gradle-wrapper.properties内容一般如下:
|
distributionUrl表示从哪个地址去下载app构建需要的gradle版本;zipStoreBase表示下载的gradle会被存放于哪个目录下;zipStorePath表示gradle会存放于zipStoreBase+zipStorePath下。
部分童鞋可能会下载比较慢,为了加快速度,我们可以指定distributionUrl为本地路径:
|
打开android studio的自带终端
执行以下命令,可以开始构建过程
|
第一次构建会下载指定版本的gradle,这个时间大约5-10分钟,再次构建就会使用缓存的gradle,或者可以直接修改gradle-wrapper.properties,指定使用本地的gradle,省去下载时间。
构建完成,我们在app/build目录下能看到编译完的代码,在app/build/outpus/apk 目录下能看到生成的apk。
除了gradlew build命令,我们也可以运行其他的任务,通过以下命令可以查看支持的任务列表
|
可以同时运行几个gradle任务,任务之间使用空格分开,同一个任务在一次构建中只会执行一次。
|
可以使用-x 参数,从任务中剔除其它任务。如:
|
执行任务还可以使用缩写的形式进行,如
|
可以写成
|
gradle默认的构建脚本文件名是build.gradle,如果使用其它名字,在构建的时候用-b参数指定
|
在android studio中,view - tool windows - gradle,打开gradle projects,我们能看到所有的gradle tasks
双击任意task,即可运行该task,运行结果显示在gradle console中
3.添加Java库依赖
添加依赖有两种方式,直接修改gradle文件或者通过android studio提供的可视化插件
1.修改gradle文件添加依赖
在app或者module的build.gradle中,dependencies块用于添加依赖的java库或者模块。
每一条依赖都与一项android配置有关,android-gradle插件默认提供的配置包括
- compile
- testCompile
- runtime
- testRuntime
依赖的库由 group:name:version三部分组成
|
它等价于
|
版本号的配置支持(不推荐)使用+号代表一系列版本
|
如果要添加一系列的jar包,可以使用files或者fileTree
|
当我们修改了gradle文件,android studio会检测到,并提示需要同步
同步会针对修改去下载新增加的依赖库,或者进行其它变化的操作。
2.android studio添加依赖
右键app模块 - open module setting - 选中app - dependencies。
右侧的小箭头里可以指定依赖的配置项,默认是compile
点击+号在弹出的对话框里面输入想添加的库,如gson,选择其中一个,该依赖项会被加入到对应的配置项中。
4.指定依赖仓库地址
repositories用于指定仓库地址
常见的仓库包括
jcenter: https://jcenter.bintray.com
mavenCentral: http://repo1.maven.org/maven2
使用本地maven仓库
|
指定maven仓库地址
|
指定maven仓库的身份验证信息
|