🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 这个文章的基础是你基本已经完成了简单的transfrom 的开发了,然后你碰到了编译速度慢的问题。 在Transform的抽象类中有一个isIncremental方法,这个方法就代表着是否开启增量编译。 # 增量编译定义 编译过程中会去遍历所有的jar .class文件,然后对文件进行io操作,以及asm插入代码,这个过程耗时一般都会很长。 这里需要注意一点:不是每次的编译都是可以怎量编译的,毕竟一次clean build完全没有增量的基础,所以,我们需要检查当前的编译是否增量编译。 需要做区分: 不是增量编译,则清空output目录,然后按照前面的方式,逐个class/jar处理 增量编译,则要检查每个文件的Status,Status分为四种,并且对四种文件的操作不尽相同 **NOTCHANGED** 当前文件不需要处理,甚至复制操作都不用 **ADDED、CHANGED** 正常处理,输出给下一个任务 **REMOVED** 移除outputProvider获取路径对应的文件 上述是对增量的一些定义,可以看出来在transfrom过程中,应该是对文件打了一些tag标签。 那么我们在开发阶段首先要先区分当前这次是不是增量编译,然后再编译当前变更的文件,对变更的文件进行处理。