gradle学习(二)
1、setting文件
在gradle中,设置文件默认名字是settings.gradle,放在根目录下,用于初始化和工程树的配置。根工程就是project,子工程就是moduel。
一个子工程或者说是moduel,只有在settings文件中配置了gradle才会去识别,构建的时候才会被打包。诸如
include ':app1',
':module_one',
':module_two',
':router',
':library_network',
':library_ui'
2、build.gradle
(1)根工程的build.gradle
根工程的构建文件是作用于整个工程,默认情况下包含两个代码块buildscript和allprojects
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
}
}
allprojects {
repositories {
jcenter()
}
}
buildscript代码块里的是gradle脚本执行所需要的配置。
repositories代码块的作用是用于配置依赖的仓库,用于指定我们依赖文件从哪里下载。
dependencies代码块用于配置构建过程中的依赖包
allproject代码块用来声明需要被运用到所有模块的属性和任务,省去对每个project进行配置。
(2)模块的build.gradle
模块的构建文件只作用于对应的模块,可以覆盖根工程的build.gradle任何属性
示例如下所示
apply plugin: 'com.android.application'//1
android {//2
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.demo.myproject"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release{
minifyEnable false
}
}
}
dependencies{//3
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:26.1.0'
}
将上面分成3个代码块进行分析
plugin
第一行apply plugin: ‘com.android.application’ 是导入了Android应用的插件,提供构建、测试、打包Android应用和依赖项目的所有任务
Android
这里的属性可以被使用,是因为我们已经在第一步导入了Android插件。
必须有的属性是 compileSdkVersion buildToolsVersion。
- compileSdkVersion 用来编译的Android版本号
- buildToolsVersion 构建工具和编译器使用的版本号
defaultConfig里面可以覆盖AndroidManifest.xml对应的属性,如
- applicationId可以覆盖packname,指的是app的包名。
- minSdkVersion和targetSdkVersion可以替换同名的属性。minSdkVersion指的是app支持运行的最小api等级。targetSdkVersion用于通知系统已经在指定版本已经通过测试,从而系统不需要启用任何向前兼容行为。
- versionCode和versionName用来定义版本号
buildType可以用来构建不同类型的应用。
dependencies
这里定义该工程所有的依赖包
3 Task
1 基础任务
Android中的gradle使用java插件,而java插件使用了基础插件。基础插件定义了assemble和clean任务。java插件定义了check和buildtasks。在基础插件中,这些任务不被实现,也不执行任何操作,被用来定义插件之间的约定,用来添加实际工作的任务。
约定如下
- assemble 集合项目的输出
- clean 清理项目输出
- check 运行所有检测 单元测试和集成测试
- build 同时运行assemble和check
2 Android 任务
Android插件拓展了基本任务,并实现它们的行为。如下
- assemble 为每个构建版本创建一个apk,如release debug
- clean 删除所有的构建内容,build文件下的
- check 运行lint检查,如果发现一个问题,则可终止构建
- build 同时运行assemble和check
assemble任务默认依赖于assembleDebug和assembleRelease,如果添加了更多的构建类型则会生成更多的任务。
除此以外还有新的任务
- connectedCheck:在连接设备或者模拟器上运行测试
- diviceCheck:一个占位任务,专为其他插件在远端设备运行测试
- installDebug和installRelease 在连接的设备上安装特定版本
3 如何创建一个任务
task customTask{
doFisrt{
println 'customTask : first'
}
doLast{
println 'customTask : last'
}
}