| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android Gradle(七)三种自定义插件方式 -> 正文阅读 |
|
[移动开发]Android Gradle(七)三种自定义插件方式 |
一、前言????????我们知道,在Android中每一次的编译和打包其实都是一个个task任务顺序执行或者并发执行最终生成一个Apk。也就是说所有的任务可以想象成一条线,上个任务的产出就是下一个任务的输入(流水线作业😄)。例如下图:一个简单的APK构建流程 例如下图:实际构建中的task任务 可以简单的理解为:
具体Task分析可以查看源码,如下: Android Gradle Plugin7.1.2源码下载 依赖进项目即可查看对应的Task,例如ProcessDebugJavaResTask: ?提示:ProcessDebugJavaResTask其实就是ProcessJavaResTask,中间的Debug根据你项目中配置的productFlavors(如果没有配置,默认debug/release)来决定,其他task也是如此。 二、我们可以做什么?????????知道每一个task的作用后,我们找到我们需要的task,在其执行前或者执行后插入我们自定义的插件(可以理解成一个也是task),例如:
而上面这些操作的基础,都是需要把自己的插件依赖进项目里,然后对相关的task进行hook。 例如下图(引入我们最常用的Kotlin插件):
接下来, 我们将介绍如何创建自己的插件并通过apply plugin方式依赖进项目。 三、创建插件并依赖进项目提示:以下配置都基于AGP版本:7.1.2 Gradle版本:7.2 首先,创建插件方式有三种,如下: 1.直接在build.gradle中创建 2.在buildSrc文件夹中创建 3.创建一个Module或者Library的方式创建 接下来,我们分别介绍下三种方式如何使用 3.1 build.gradle中自定义插件这种方式比较简单,就不过多介绍,直接在App模块的build.gradle中创建,代码如下:
??提示:自定义插件都需要实现Plugin接口。 运行,同步下,结果如下: 3.2 在buildSrc文件中自定义插件这里需要分别介绍Java和Kotlin的创建,发现还是有一些不一样的。推荐用Kotlin开发,Google主推 3.3.1 使用Java语言 首先,在项目的根目录下创建一个buildSrc文件夹,然后在buildSrc文件夹里创建一个build.gradle文件,build.gradle文件代码如下:
?提示:如果需要支持Groovy,自行添加 apply plugin: 'groovy' 目录结构截图如下: ?然后,点击Sync同步项目,就会发现buildSrc文件夹下会多出一些gradle的相关文件,截图如下: 如果你的Gradle版本7.2可以发现,在settings.gradle多了一个buildSrc文件夹,这是因为buildSrc是系统默认的文件夹。 ?接下来在buildSrc上右键新建文件夹,会发现多出一些文件夹选择,如下:
?代码如下:
还是一样在App模块的build.gradle中加入如下代码:
运行,同步下,结果如下: ?3.3.1 使用Kotlin语言 主要流程与上面Java的创建一样,不同的是build.gradle文件的创建和Kotlin文件夹,如下: ?需要注意点:
build.gradle.ktx代码如下:
?如果你的Gradle版本为7.0以上,可能会遇到如下问题:Build was configured to prefer settings repositories over project repositories but repository 'Gradle Libs' was added by unknown code 只需要如下修改即可: 在setting.gradle中,将
修改为:
?截图如下: ?问题的原因就是Gradle希望开发者将所有仓库配置都在这里设置,而不是根据每个项目自己去导入。 3.3 通过Module/Library自定义插件?第一步:新建一个Module或者Library 因为无论选择哪个最后只保留src文件夹和build.gradle,文件其他全部删除。将上面的MyPlugin.java放到包里,截图如下: ?第二步:创建com.example.plugins.properties文件 路径如下:resources/META-INF/gradle-plugins/com.example.plugins.properties 注意:跟java文件夹是在同一层,resources/META-INF/gradle-plugins/必须是这个路径,后面的文件名可以自定义,后面会用到。 ?文件内容如下:
第三步:发布代码到本地? 修改build.gradle代码如下(代码中包含Gradle7.0以上和以下两种方案):
第四步,点击task发布? 可以看到在项目中多了个plugins文件夹,如下: ?第五步:引入插件到工程 ?在根build.gradle中加入下面代码
第六步:添加依赖 把com.example.plugins添加依赖,这里名字也就是我们上面创建com.example.plugins.properties文件
?第七步:运行代码 四、总结如果是为了快速测试可以选择在直接在build.gradle中创建 如果只有一个插件开发,选择在buildSrc文件夹中创建 如果有多个插件开发,选择以创建一个Module或者Library的方式创建 建议:如果是在项目中,使用第三种方式。在语言上,使用Kotlin进行插件开发。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 1:41:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |