首先,
有如下資料,表示在現有專案的ipa/apk整合flutter後的大小變化
before
after
ios22kb
5mbandroid
2.3mb
7mb然後,開始分析整合了flutter的ios/android應用結構:
在分析之前,先要了解flutter的dart語言。
dart 是谷歌在 2011 年推出的程式語言,是一種結構化 web 程式語言。在fluttersdk中的dart支援兩種執行模式jit(just in time)和aot(ahead of time)。
jit模式,將dart**編譯成中間**,在應用執行時,將中間**編譯成機器碼執行,這種執行模式主要用於開發除錯時跟蹤**;
aot模式,直接將dart**編譯成機器碼,因為不需要在執行時編譯操作,所以這種執行模式效率更高,生產包都應該使用aot模式。
如圖所示,展示了flutter的android應用打包後debug和release的區別:
android端debug和release的區別就在於:
debug包有kernel_blob.bin
檔案;
release包kernel_blob.bin
被編譯成了*_snapshot_instr
檔案
release包中*_snapshot_data
和*_snapshot_instr
是成對出現的:
*_snapshot_instr
檔案是機器指令檔案,instr == instruction
*_snapshot_data
檔案是資料檔案,/字型等資源檔案對映都包含在其中
這些檔案的具體作用,待後繼分析flutter engine原始碼
如圖展示了flutter的ios應用debug和release包主要結構:
檔案的具體作用,待後繼分析flutter engine原始碼
Flutter開發MacOS應用
從1.13alpha版本開始,已經涵蓋了對macos的桌面支援。其實對windows和linux的支援。但本文只介紹macos的使用過程。flutter channel master flutter upgrade flutter config enable macos desktop flutte...
Flutter 應用熱更新
不過,熱更新雖然具有很大的優點,但是濫用熱修復也會給應用帶來不好的體驗,並且蘋果對於熱更新和修復是明令禁止的,所以熱更新主要針對的是國內android市場。目前,flutter對外開放的sdk是不支援熱更新的,但是在flutter的原始碼裡有一部分預埋的熱更新相關的 可以通過一些必要的手段在andr...
Flutter 應用內更新
language english 中文 註冊賬號 建立應用與版本 安裝 dependencies update 2.0.7 用法這是乙個android的例子 import package ota update ota update.dart import package update update....