Android Studio工程构建之Gradle
参考:
https://www.jianshu.com/p/e1f132052fb4
一、task任务
1、新建任务
如下在root目录build.gradle新建任务generateJar,用于生成所有Moudle的jar包
task generateJar {
dependsOn(':' + project.name + ':build')
doLast {
copy {
delete('build/libs') //如果之前存在,则先删除
from('build/intermediates/intermediate-jars/debug/') //设置拷贝的文件
into('build/libs/') //生成jar包后的文件目录位置
include('classes.jar') //include,exclude参数来设置过滤
rename('classes.jar', project.name.toLowerCase() + '.jar') //重命名
}
}
}
注意,该build.gradle下新建的任务针对于整个工程,即所有Module都可使用该任务。如下图,可以发现Module的gradle task里也多出了这个任务,当针对Module执行的时候,该任务只会对该Module执行。当在最外层gradle执行该task的时候,会对所有Module都执行这个task;
root-build_gradle-task.png
module-build-gradle_task.png
二、dependencies依赖
管理该模块或者工程的依赖库
dependencies { //项目的依赖
implementation fileTree(dir: 'libs', include: ['*.jar']) //本地jar包依赖
api project(':U8SDK3') //模块依赖
implementation 'androidx.appcompat:appcompat:1.0.2'//远程依赖
testImplementation 'junit:junit:4.12' //声明测试用例库
androidTestImplementation 'androidx.test:runner:1.2.0' //声明测试用例库
}
三、setting.gradle
组织参加构建的module和工程
比如工程结构如下:
project
├─── setting.gradle
├─── build.gradle
├─── app
│ └─── build.gradle
└─── library1
│ └─── build.gradle
└─── library2
└─── build.gradle
若要两个module都参与构建,则在setting.gradle添加
include ':library1', ':library2'
若要在其他工程或者module中依赖这两个module,则在需要依赖的build.gradle添加依赖
dependencies {
compile project(':library1')
compile project(':library2')
}
如果module的路径不是直接在root路径下,比如是如下工程结构:
project
├─── setting.gradle
├─── build.gradle
├─── app
│ └─── build.gradle
└─── libraries
├─── library1
│ └─── build.gradle
└─── library2
└─── build.gradle
则setting.gradle配置
include ':libraries:library1', ':libraries:library2'
依赖配置
dependencies {
compile project(':libraries:library1')
compile project(':libraries:library2')
}