Giter Site home page Giter Site logo

androidplugin's Introduction

headPlugin是一个低版本的插件,即com.android.tools.build:gradle:8.0.0以下的;highPlugin是一个高版本的插件,com.android.tools.build:gradle:8.0.0及以上。

  1. 应用插件:
  • 发布插件到本地
 gradlePlugin {
    plugins {
        //MyTestPlugin  //这种方式也行
        create("MyPlugin") {
            //插件id
            id = 'com.ccts.highplugin'
            //插件的包名+类名
            implementationClass = 'com.ccts.highplugin.HighPlugin'
        }
    }
  }


  • 打包称maven包到本地
publishing {
        // 配置仓库地址
        repositories {
            maven {
                url = uri('D:/release/repo')
            }
        }
    }
  1. 在app的build.gradle.kts中添加 id("com.ccts.highplugin") version "1.0.0";

  2. 高版本的用法,如果是在java代码中添加编译过程,保证myCustomTransformTask在compileDebugJavaWithJavac之后,在编译mergeDebugShaders之前进行(即javac和dex文件之间)

package com.ccts.highplugin;


import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;


public class HighPlugin  implements Plugin<Project>{

    @Override
    public void apply(Project project) {

        project.getTasks().register("myCustomTransformTask", HighTransformTask.class, task -> {
            task.setGroup("MyPluginTasks");
            task.setDescription("Transforms classes using MyClassTransformTask.");
        });

        // 确保任务在 compileDebugJavaWithJavac 之后执行
        project.afterEvaluate(proj -> {
            Task compileDebugJavaTask = project.getTasks().findByName("compileDebugJavaWithJavac");
            Task dexBuilderDebugTask = project.getTasks().findByName("mergeDebugShaders");
            Task myTransformTask = project.getTasks().findByName("myCustomTransformTask");

            if (compileDebugJavaTask != null && myTransformTask != null) {
                myTransformTask.mustRunAfter(compileDebugJavaTask);
            }

            if (dexBuilderDebugTask != null && myTransformTask != null) {
                dexBuilderDebugTask.dependsOn(myTransformTask);
            }
        });

        System.out.println("MyClassTransformPlugin applied to project: " + project.getName());
    }


}

androidplugin's People

Contributors

mingpp avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.