Flutter應用結構分析

2021-09-07 18:31:00 字數 1145 閱讀 4720

首先,

有如下資料,表示在現有專案的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....