Android Studio自定义Gradle Task并运行

Posted 胡刚2021

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio自定义Gradle Task并运行相关的知识,希望对你有一定的参考价值。

一种创建并执行Gradle Task的方式

=========================================================
gradle依赖演示
创建一个config.gradle文件,并在其中定义一个task

选择一个gradle文件,比如build.gradle,注释掉所有原来的代码,并写入下面的内容,然后执行build.gradle中创建的task,发现先执行apply from中定义的task

========================================================
实现一个Task,执行它能创建文件,并填充文件内容

class MyTask_Input_Output extends DefaultTask

    @Input
    @Optional   //表示这个属性可选,不必在初始化这个类的时候传入这个参数
    String input

    @OutputFile
    @Optional
    File output

    MyTask_Input_Output()
        group "自定义任务"
    

    @TaskAction
    void action()
//        println "==================================="
//        println input
        println output
//        println "==================================="

        println inputs.files.singleFile

        def inFile = inputs.files.singleFile
        def file = outputs.files.singleFile
        file.createNewFile() //创建test.txt文件
        file.text = inFile.text //填充test.txt文件的内容为build.gradle文件中的内容
    


tasks.create("myTask_Input_Output", MyTask_Input_Output)

//    input = "a/b/c"
    output = file("test.txt") //在当前目录定义一个文件,注意是定义不是创建

    inputs.file file('build.gradle')
    outputs.file file('test.txt')

=========================================================
实现一个Task,使它能将build/outputs文件夹下的所有文件压缩为zip文件,并将压缩后的zip文件放到build/custom文件夹下

//将app/build/outputs下的文件全部压缩成output.zip文件,并且将output.zip文件放到app/build/custom下
task zip2(type: Zip)
    println buildDir
    archiveName "output.zip"
    destinationDir file("$buildDir/custom")
    from "$buildDir/outputs"

=========================================================
实现一个task,将debug apk再次压缩成zip文件,存放到另一个目录

//将生成的debug apk,重新压缩成output2.zip文件,并且将output.zip文件放到app/build/custom下
afterEvaluate  //afterEvaluate这个task是等所有的task执行完后才执行,也就是说此时肯定打包完了
    println "============================"
    println tasks.getByName("packageDebug")

    task zip3(type: Zip)
        println buildDir
        archiveName "output2.zip"
        destinationDir file("$buildDir/custom")
        from tasks.getByName("packageDebug").outputs.files
        tasks.getByName("packageDebug").outputs.files.each
            println it
        
    

以上是关于Android Studio自定义Gradle Task并运行的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件自定义 Gradle 任务 ① ( Gradle 面板显示任务列表 | 自定义任务生成与显示分组 )

Android Gradle 插件自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )

Android Gradle 插件自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )

Android Gradle 插件自定义 Gradle 任务 ① ( Gradle 面板显示任务列表 | 自定义任务生成与显示分组 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )