Gradle 任务

1、任务执行顺序

  task clean(type: Delete) {
      println "task clean 1111111"
      delete rootProject.buildDir
      doLast {
          println "task clean dolast one"
      }
      doLast {
          println "task clean dolast three"
      }
      doFirst {
          println "task clean doFirst three"
      }
      doFirst {
          println "task clean doFirst one"
      }
      println "task clean 2222222"
  }
  • 这里的执行结果是

    111111111
    222222222
    task clean doFirst one
    task clean doFirst three
    task clean dolast one
    task clean dolast three
    
    doFirst 的意思是在任务队列最前面插入待执行任务
    doLast  的意思是在任务队列最后面插入待执行任务
    
2、dependsOn
task clean(type: Delete) {
    delete rootProject.buildDir
    doLast {
        println "task clean dolast three"
    }
    doFirst {
        println "task clean doFirst three"
    }
}

task clean2(dependsOn: clean) {
    doLast {
        println "tasks clean2"
    }
}

这里要执行 clean2 任务的话, 必须先执行 clean 任务, 因为 clean2 依赖 clean

3、afterEvaluate

task testTask() {
    doLast {
        println "testTask"
    }
}

afterEvaluate {
    def assembleDebugTask = tasks.findByName('assembleDebug')
    def testTaskTask = getTasks().findByName('testTask')
    testTaskTask.dependsOn(assembleDebugTask)
}

afterEvaluate 绘制任务树绘制完成之后执行, 任务树是一个有向无环图, 表明了每个任务的依赖关系

4、buildTypes

buildTypes {
    internal {
        initWith debug
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

这里构建了不同的类型, 在写代码的时候可以根据不同的类型选择要执行的代码

[外链图片转存失败(img-Bcvk4dhl-1562551853158)(./resources/buildType.png)]

5、productFlavors

flavorDimensions 'paying', 'nation', 'language'
productFlavors {
    free {
        dimension 'paying'
    }
    paid {
        dimension 'paying'
    }
    global {
        dimension 'nation'
    }
    china {
        dimension 'nation'
    }
    chinese {
        dimension 'language'
    }
    english {
        dimension 'language'
    }
    french {
        dimension 'language'
    }
}

在这里配置不同的维度之后, 就可以选择要执行的变体类型了

[外链图片转存失败(img-zUxBOlkR-1562551853159)(./resources/productFlavors.png)]

6、implementation, api, compile

compile: 会传递引用, 已过时

implementation: 不会传递引用, 可以进行代码隔离

api: 会传递引用, 替代之前的 compile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值