zoukankan      html  css  js  c++  java
  • Android 自定义 grdle 插件(一)

    重新学习一下自定义gradle插件,搞Android开发的要想搞些骚操作免不了需要用到自定义gradle这个武器,例如资源整理,asm插桩,代码检测等等。

    直入主题,开始说明步骤。

    1. 创建一个测试Android 项目
    2. 在改项目中创建一个Android Module,然后更改对应library的build.gradle文件,修改后内容如下
    3. 然后就是集成最基本的在对应的src文件夹下创建一个kotlin文件写对应的实现,这里集成最基本的plugin类,具体实现如下
    package com.xpj.firstgradlelibrary
    
    import com.android.build.gradle.AppExtension
    import com.android.build.gradle.BaseExtension
    import com.android.build.gradle.internal.tasks.factory.dependsOn
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    import java.io.File
    import java.text.SimpleDateFormat
    import java.util.*
    
    /**
     * author : xpj
     * date : 6/18/21 11:13 AM
     * description :
     */
    class XPJFirstPlugin : Plugin<Project> {
        override fun apply(project: Project) {
            // todo 这里的方法是吧自己加到assemble之前的task,构建依赖树
            //将MyFirstPlugin添加到构建树
            val android = project.extensions.findByType(BaseExtension::class.java)
            (android as AppExtension).applicationVariants.all {
                //将MyFirstPlugin task添加到assemble task前
                //assemble依赖MyFirstPlugin的意思是说assemble运行前先运行MyFirstPlugin
                it.assembleProvider.dependsOn(XPJ_PLUGIN_NAME)
            }
    
            project.tasks.create(XPJ_PLUGIN_NAME) { task ->
                task.group = XPJ_PLUGIN_GROUP
                println("我在自定义plugin里面,改变之后的。")
                File("${project.projectDir.path}/IMOUT.txt").apply {
                    writeText("Hello World! AAAA BBB CCC
    Printed at: ${SimpleDateFormat("HH:mm:ss").format(Date())}")
                }
                // 这里因为dolast在执行的时候并没有生成文件
                task.doLast {
                    File("${project.projectDir.path}/myFirstGeneratedFile.txt").apply {
                        writeText("Hello World! AAAA BBB CCC
    Printed at: ${SimpleDateFormat("HH:mm:ss").format(Date())}")
                    }
                }
            }
        }
    }
    
    1. 这里写好之后在对应的build.gradle下面执行我们的上传task这时候如果成功就会在本地或者maven生成对应的包,包含maven的形式,例如pom文件xml文件啥的
    2. 在app工程里面引用,首先在project下面增加对应的引用和依赖
    3. 在app 项目下的build引用
  • 相关阅读:
    要做好性能测试,该掌握些什么?
    <form> 标签
    javascript DOM编程艺术 第10章问题记录
    简单的图片显示
    fieldset 不常用的HTML标签
    XMLHttpRequest
    单选复选框的制作
    ASP.NET MVC 中使用“RadioButtonList”和“CheckBoxList”
    Web Service 系列 → 第一个 Hello Word
    .NET平台开发实例药店系统分布式部署
  • 原文地址:https://www.cnblogs.com/pjex/p/14899710.html
Copyright © 2011-2022 走看看