前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

作者头像
韩曙亮
发布2023-03-30 17:12:41
8950
发布2023-03-30 17:12:41
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

Android Plugin DSL Reference 参考文档 :

一、自定义插件作用


在 Gradle 自定义插件 Plugin 中 , 如果要执行复杂的工作 , 可以在 实现的 Plugin 接口的 apply 函数中执行 ;

代码语言:javascript
复制
package org.gradle.api;

public interface Plugin<T> {
    void apply(T var1);
}

一般情况下 , 自定义插件工程都是针对 特定的 需求 , 开发固定功能的插件 ;

二、Android Gradle 插件的 AppExtension 扩展


Android Gradle 插件 也是一个 自定义插件 , 这个插件功能复杂 , 代码量较大 , 如 定义了 AppExtension , ProductFlavor 等上百个类 , 涉及到 Android 工程编译的方方面面 ; 详细参考 https://google.github.io/android-gradle-dsl 文档 ;

在 build.gradle 构建脚本 中的 android 脚本配置块 配置 , 其目的就是给 Android Gradle 插件 传递编译参数 ;

代码语言:javascript
复制
android {
    compileSdkVersion 31
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "kim.hsl.android_ui"
        minSdkVersion 18
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

三、自定义 Extension 扩展


在 Android Gradle 插件中 , 定义了 AppExtension 扩展 , 对应的就是 build.gradle 构建脚本 中的 android 脚本块 ;

自定义 Gradle 插件中 , 可以定义自己的扩展 ;

首先 , 调用 project.extensions.create 方法 , 创建扩展 , 类似于 Android Gradle 插件中的 android , 引入了 MyPlugin 插件后 , 就可以使用 myplugin 配置块 ;

代码语言:javascript
复制
import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        println 'MyPlugin'

        // 创建一个扩展
        // 类似于 Android Gradle 插件中的 android
        // 引入了 MyPlugin 插件后
        // 就可以使用 myplugin 配置块
        project.extensions.create("myplugin", MyPluginExtensions)
    }
}

然后 , 创建 MyPluginExtensions 类 , 其中定义扩展项 ;

代码语言:javascript
复制
class MyPluginExtensions {
    def name
    def age
}

最后 , 在 build.gradle 构建脚本 中 , 配置自定义扩展 ;

代码语言:javascript
复制
apply plugin: MyPlugin

myplugin {
    name 'Tom'
    age 18
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、自定义插件作用
  • 二、Android Gradle 插件的 AppExtension 扩展
  • 三、自定义 Extension 扩展
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档