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

基本项目搭建

  • 项目新建一个Android Module,取名为plugin
  • 删除无用资源,新建groovy、resources/META-INF/gradle-plugins目录

  • 修改build.gradle

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'
    }
}
  • groovy目录新建一个文件BuryPointPlugin.groovy并放到com.peakmain.analytics.plugin目录下
    这个便是我们的入口了,程序一编译我们就会来到这里并调用apply方法

class BuryPointPlugin implements Plugin<Project>{

    @Override
    void apply(Project project) {
          println("欢迎来到gradle插件")
    }
}
  • resources下新建一个com.peakmain.plugin.properties文件,注意:com.peakmain.plugin是我们引入的插件的名字,properties是后缀

  • 来到Android Studio的右上角Gradle,选择module plugin的Tasks

双击之后我们在Android Studio目录下可以看到文件夹[repo] 

修改根目录的build.gradle 

  • 修改app的build.gradle

apply plugin: 'com.peakmain.plugin'
  • 重新build之后看到这行打印就代表成功了

 

扩展

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

 

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

  • groovy目录新建一个BuryPointExtension.groovy

class BuryPointExtension{
    boolean disableAppClick = false
}

修改BuryPointPlugin源码

    @Override
    void apply(Project project) {
        project.extensions.create("peakmainPlugin", BuryPointExtension)
    }
  • 重新uploadArchives之后在app的build.gradle就可以使用了

gradle.properties中设置依赖

  • 上面我们在app的gradle中设置扩展依赖peakmainPlugin,那如果我们想在gradle.properties中设置,如何做呢?

 

  • 修改BuryPointPlugin源码

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("------------您已关闭了埋点插件--------------")
        }
    }
}
  • 查看结果

 

修改gralde.properties中的属性的值并查看结果

 

 

作者:Peakmain
链接:https://www.jianshu.com/p/03c5886c2af9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值