安卓中的Gradle、task任务和自定义插件库

目录

 

1、androidStudio中build.gradle的结构和作用

2、task任务和自定义task任务

3、自定义插件


1、androidStudio中build.gradle的结构和作用

目录结构:

root 

   |-- build.gradle (1)

   |-- app   

          |-- build.gradle (2)

   |-- module

          |-- build.gradle (3)

   |-- settings.gradle (4)

(1)根目录下的build.gradle

这个文件主要负责整个项目的插件管理,和设置每个子模块的通用配置

buildscript {

    // 配置插件的仓库位置
    repositories {
        google()
        jcenter()

        // maven本地仓库
        maven {
            url uri('repo')
        }
    }
    dependencies {
        // 指定要导入那些插件
        // 插件命名格式 组名:插件库名:版本号
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath 'com.plugin:plugin:1.0.0'
    }
}

// 所有子模块通用配置
allprojects {

    // 配置依赖的仓库位置(其实也可以直接写在对应的子模块内)
    repositories {
        google()
        jcenter()
    }
}


****另一种写法,直接把配置依赖的仓库位置,在子模块build.gradle中配置
repositories {
    google()
    jcenter()
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    ...
}

(4)settings.gradle

声明该项目引用那些模块

include ':app'  

(2)build.gradle 对应主模块的配置

// 引用某个插件plugin
apply plugin: 'com.android.application'

// 引用本地第三方插件plugin
apply plugin: TextPlugin1

// 配置该模块的信息
android {
    
}

// 配置依赖的仓库位置(跟根目录下build.gradle下allprojects重叠)
repositories {

}

// 配置引用那些依赖
dependencies {

}

(3)build.gradle 对应子模块的配置(写法跟主模块的build.gradle一样)

总结:

每个build.gradle对应着一个project对象(可以理解成配置文件一样,一个模块对应一个配置文件),使用groovy的动态语音编写,用了闭包的写法,加上groovy的本身的语法特性,所以看起来很简洁。

2、task任务和自定义task任务

(1)task的使用

例如:图上箭头标出就是就我们平时点击  执行的任务,双击对应的任务就可以执行。

(2)自定义task

1.最基础的定义方式

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

上面写法是被它简化了,它原本的样子是这样的

task(hello1,{
    doLast {
        println("hello1")
    }
})

// task方法是长这样的
Task task(String name, Closure configureClosure)

2.较高级的用法(这部分就没有详细写了)

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

// 依赖着hello3,即先执行hello3,在执行自己
task(dependsOn: hello3, hello2) {
    doLast {
        println("hello2")
    }
}

// 复制任务
task copyTask(type: Copy) {
    from "src/main/AndroidManifest.xml"
    into "/"
}

备注:复制到app下的build.gradle就可以运行

3、自定义插件

自定义插件库的文件结构如下:

1.配置build.gradle

apply plugin: 'java'
// 需要编译groovy,需要groovy插件
apply plugin: 'groovy'
// 需要发布到本地仓库,需要maven插件
apply plugin: 'maven'

// 配置依赖
dependencies {
    compile gradleApi()  // 需要继承Plugin<T>
    compile localGroovy()  // 因为用groovy写的,需要该依赖
}

// 指定组名,和版本号
group = 'com.plugin'  
version = '1.0.0'

// 指定maven本地仓库位置
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: uri('../repo'))
        }
    }
}

2.继承Plugin<T>

package com.plugin

import org.gradle.api.Plugin
import org.gradle.api.Project

public class TextPlugin1 implements Plugin<Project> {
    void apply(Project project) {
        project.task('hello') {
            doLast {
                println "Hello World from the DemoPlugin"
            }
        }
    }
}

3.properties配置文件

implementation-class=com.plugin.TextPlugin1

名字方法 组名(com.plugin)  即:com.plugin.properties

4.执行发布maven仓库  执行task:uploadArchives

到这里如果一切顺序就会在本地看到这个仓库

至于怎么使用这个插件库,可以看回第一部分的内容

如果成功导入一个第三方插件库,就可以在这个地方看到对应的task任务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值