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

 1、我们一般会用Jenkins这样的平台进行打包,使用gradle时就需要先执行android studio的 assembleRelease的task

    此时我们可以通过gradle的任务依赖来实现

testTask (dependsOn: "assembleRelease") {
    //do some actions
}

此时我们的testTask如果是在APP module下的build.gradle中那么这个assembleRelease则是执行

Android Gradle使用笔记(持续更新)_第1张图片

如果我们项目中有多个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会报错:

Android Gradle使用笔记(持续更新)_第2张图片

这是我们可以自己声明一个configuration,如下:

Android Gradle使用笔记(持续更新)_第3张图片

注:这样复制依赖的时候,如果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)