1.gradle插件的简单介绍:      

   相信做过Android 开发的同学,都知道Andrioid Studio 的构建工具使用的是Gradle ,同时Android 实现一系列编译打包 都是基于Android Studio内部的引入的gradle插件包 classpath"com.android.tools.build:gradle:3.6.1"。

    该插件内部基于gradle 框架开发了 各种构建Task,帮助实现整个项目打出完整的 apk安装包,下图是Android ./app 内部 build.gradle脚本中引入的 id 'com.android.application' 插件对应的一些构建Task:

      鸿蒙也是基于Os 运行的安装包,不过构建流程更加复杂,构建场景更加多样化,但鸿蒙的构建工具也是基于gradle框架开发,实现原理相同,所以对Android 构建插件比较了解的同学也能很快上手鸿蒙构建插件的使用,甚至可以基于gradle 开发自定义的鸿蒙构建插件,下图是鸿蒙单entry Hap 工程gradle 同步后加加载进gradle Task管理工具内的构建Task,其中 MyApplication/Tasks/ohos下面的Task是基于 鸿蒙Project 下的build.gradle 内部配置的 apply plugin: 'com.huawei.ohos.app' 引入,该插件基于 鸿蒙 Project完整项目结构实现,MyApplication/entry/Tasks/ohos是基于 鸿蒙Project 下entry Hap 模块内部的build.gradle配置的 apply plugin: 'com.huawei.ohos.hap' 引入。

2.Gradle 基本介绍:

       gradle 是一个基于Apache Ant 和Apache Maven 概念的项目的自动化开源构建工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目配置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置,面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala.

     官网地址: http://org.gradle.com/

     官方手册地址:https://docs.gradle.org/current/userguide/userguide.html Gradle

     sdk api 下载地址:https://downloads.gradle.org/distributions/gradle-2.14.1-all.zip

     Gradle 源码地址:https://github.com/gradle/gradle

3.基于Gradle 插件开发一个自定义适配鸿蒙工程插件:

  插件基于Intellij 编辑器开发,既可以使用社区版也可以基于付费版开发:

   1.首先创建一个基于 Gradle 的java/Groovy,也可以只选java,或者只选groovy,选择哪种语言决定你使用哪种语言进行插件开发。

2.在工程目录下的build.gradle 目录下配置插件开发需要的一些Api,同时引入maven插件,方便开发的鸿蒙插件打包发布,其中 gradle Api 相当于引入gradle 插件开发的gradle 框架代码,groovy api 提供了一些基于groovy特性开发的一些工具类,可以简化插件的开发。

plugins {
    id 'groovy'
    id 'maven'
}

group 'com.huawei.ohos'
version '1.0'

repositories {
    mavenCentral()
}

dependencies {
    //引入gradle 的 api
    compile gradleApi()
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}


uploadArchives {
    repositories {
        mavenDeployer {
            repository(
                    //本地的Maven 地址,该闭包由 'maven 插件提供',通过配置线上或是线下的地址,实现gradle 插件的打包发布
                    url: uri('file://D:01.localMaven')
            )
        }
    }
}

3.自定义一个插件入口,如果开发者需要开发多个插件入口,就可以自定义一个 abstract 类型的 groovy,来实现多插件继承这一抽象类,如鸿蒙工程内部有定义了多种Moduel类型,我们可以基于完整工程开发一个自定义的MyAppPlugin,以及基于Hap模块的MyHapPlugin,同时基于Har模块的MyHarPlugin:

4.开发的自定义的插件入口需要实现 自定义的abstract 入口,并需要在resources文件夹下创建gradle-plugin/文件名.properties文件,其中文件名就是该插件在工程内部引入的插件名称:

5.插件名称.properties内部需要指向自定义的插件入口类:MyAppPlugin:

 

4.插件打包,在鸿蒙工程中引入该插件,并对插件工程进行调试:

 1.插件发布,在3步中我们在插件工程创建的时候引入的maven插件,内部的uploadArchives 配置了插件的本地发布地址,打开开发工具的右边栏,点击uploadArchices进行发布:

2.发布后我们可以在本地磁盘中找到该插件jar包,其中01.localMaven对应 本地发布地址,com.huawei.ohos对应group,myhohosplugin对应工程名,1.0对应版本号

3.打开 DevEco Studio,在外层的build gradle 中引入该插件包,并配置插件:

4.同步成功后,我们就可以在gradle 窗口栏./Tasks/other/pluginTest找到该Task:

5.点击执行该Task,在run窗口栏就可以找到该Task的执行结果,对应开发plugin Apply方法中该Task中代码的执行结果,通过修改代码,重复发布,再执行Task可以实现插件代码的调试

 

 

 

 

 

 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐