gradle安卓进阶

Gradle 插件 + ASM 实战——入门篇

2021-06-15  本文已影响0人  Peakmain

基本项目搭建

apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
    implementation gradleApi()
    implementation localGroovy()

    implementation 'org.ow2.asm:asm:7.1'
    implementation 'org.ow2.asm:asm-commons:7.1'
    implementation 'org.ow2.asm:asm-analysis:7.1'
    implementation 'org.ow2.asm:asm-util:7.0'
    implementation 'org.ow2.asm:asm-tree:7.1'
    compileOnly 'com.android.tools.build:gradle:3.4.1', {
        exclude group:'org.ow2.asm'
    }
}
repositories {
    jcenter()
}

uploadArchives {
    repositories.mavenDeployer {
        //本地仓库路径,以放到项目根目录下的 repo 的文件夹为例
        repository(url: uri('../repo'))

        //groupId
        pom.groupId = 'com.peakmain'

        //artifactId
        pom.artifactId = 'android.plugin'

        //插件版本号
        pom.version = '1.0.0'
    }
}
class BuryPointPlugin implements Plugin<Project>{

    @Override
    void apply(Project project) {
          println("欢迎来到gradle插件")
    }
}
apply plugin: 'com.peakmain.plugin'

扩展

我们在build.gradle通常会看到这些扩展


image.png

如果我们想我们的项目也添加一个扩展,应该怎么做?

class BuryPointExtension{
    boolean disableAppClick = false
}

修改BuryPointPlugin源码

    @Override
    void apply(Project project) {
        project.extensions.create("peakmainPlugin", BuryPointExtension)
    }

gradle.properties中设置依赖

class BuryPointPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        BuryPointExtension extension = project.extensions.create("peakmainPlugin", BuryPointExtension)
        boolean disableBuryPointPlugin = false
        Properties properties = new Properties()
        //gradle.properties是否存在
        if(project.rootProject.file('gradle.properties').exists()){
             //gradle.properties文件->输入流
            properties.load(project.rootProject.file('gradle.properties').newDataInputStream())
            disableBuryPointPlugin=Boolean.parseBoolean(properties.getProperty("peakmainPlugin.disableAppClick","false"))
        }
        //如果disableBuryPointPlugin可用
        if(!disableBuryPointPlugin){
           println("欢迎来到peakmainPlugin")
        }else{
            println("------------您已关闭了埋点插件--------------")
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读