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时就会是我们想执行的顺序了
这篇博客主要介绍了Android开发中使用Gradle的一些实用技巧。首先提到了在Jenkins等平台上,如何通过Gradle任务依赖来执行assembleRelease任务,以适应多模块项目的构建需求。其次,解释了如何获取compile/implementation/api依赖的aar或jar,并解决重名覆盖问题。最后,讨论了在打包前执行clean任务的重要性,以及如何调整任务执行顺序,确保clean在assembleRelease之前完成。
&spm=1001.2101.3001.5002&articleId=80868235&d=1&t=3&u=1530c23af6cf4198b1e81674ba765a23)
3141

被折叠的 条评论
为什么被折叠?



