1 项目背景
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
AspectD是咸鱼针对Flutter实现的AOP开源库,GitHub地址如下:https://github.com/alibaba-flutter/aspectd。
十分感谢咸鱼团队开源的AspectD开源库,AspectD让flutter具备了aop的能力,给了贝壳flutter团队很多思路,让很多想法成为可能。
2 Flutter相关知识介绍
首先,我们来回顾一下flutter编译相关的一些知识。
2.1 Flutter编译流程
如上图,flutter在编译时,首先由编译前端将dart代码转换为中间文件app.dill,然后在debug模式下,将app.dill转换为kernel_blob.bin(其实这个文件就是app.dill改了个名字),在release模式下,app.dill被转换为framework或者so。
Flutter的aop就是对app.dill进行修改实现的。下面我们先来了解一下app.dill文件。
2.2 app.dill文件
原文链接:【https://www.infoq.cn/article/Udy0OLJQMNEyzklg5FQZ】。未经作者许可,禁止转载。