Android Gradle使用笔记(持续更新)

这篇博客主要介绍了Android开发中使用Gradle的一些实用技巧。首先提到了在Jenkins等平台上,如何通过Gradle任务依赖来执行assembleRelease任务,以适应多模块项目的构建需求。其次,解释了如何获取compile/implementation/api依赖的aar或jar,并解决重名覆盖问题。最后,讨论了在打包前执行clean任务的重要性,以及如何调整任务执行顺序,确保clean在assembleRelease之前完成。

 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时就会是我们想执行的顺序了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值