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】。未經作者許可,禁止轉載。