Categories
程式開發

Beike AspectD的原理及運用


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編譯流程

Beike AspectD的原理及運用 1

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