|
1、我们一般会用Jenkins这样的平台进行打包,使用gradle时就需要先执行android studio的 assembleRelease的task 此时我们可以通过gradle的任务依赖来实现 testTask (dependsOn: "assembleRelease") {
//do some actions
}
此时我们的testTask如果是在APP module下的build.gradle中那么这个assembleRelease则是执行 
如果我们项目中有多个module,我们的脚本需要使用其他module的aar,我们就需要执行其他module下的assembleRelease任务task 此时我们可以这么做: testTask (dependsOn: "assembleRelease") {
dependsOn: ":myModule:assembleRelease"
}
此时testTask同时依赖这两个任务,我们在执行testTask时依赖的任务会执行结束,可以获取到aar
2、我们使用compile/implementation/api等依赖如何获取aar或者jar 代码如下: copyLibs(type: Copy) {
from configurations.compile
into "myLibs"
}
执行该task会将compile的依赖copy到myLibs文件夹下 现在我们使用implementation/api来依赖,此时 from configurations.compile会报错: 
这是我们可以自己声明一个configuration,如下: 
注:这样复制依赖的时候,如果jar/aar重名会出现覆盖掉的问题,我们需要对其进行处理 官方文档
3、使用gradle打包时,每次初始化时都希望执行下clean操作来清空上次编译的缓存 如果我们按照一般做法: task dependsTask() {
dependsOn "clean"
dependsOn "assembleRelease"
doFirst {
println "dependsTask is executed"
}
}
我们执行dependsTask,我这里在android studio的terminal执行,可以发现实现执行的assembleRelease,后 执行的clean操作,我们是希望执行完clean操作后再执行assembleRelease操作,这样我们可以在此基础上 执行我们的gradle脚本,有点类似改变系统task的执行顺序 先说下做法:我们在dependsOn "assembleRelease" 下加行代码 tasks.getByName("assembleRelease").mustRunAfter("clean") 这样我们执行task时就会是我们想执行的顺序了 |