Flutter打包APK的幾種方式小結(jié)
前言
Flutter打包不同于RN,F(xiàn)lutter可以在Android Studio里編寫Flutter代碼并最終打包為APK,本篇主要闡述涉及到的幾種打包方式。
通過本篇文章,你將了解到:
Android原生打包APK方式
Flutter通過原生工程打包方式
Futter工程打包方式
Flutter打包產(chǎn)物分析
1. Android原生打包APK方式
以原生Android工程為例。
- 設(shè)置編譯模式
選擇變體,通常有debug和release模式(可以新增不同的模式),默認是debug模式。
我們平時點擊Run到設(shè)備上就是debug模式。
- 開始構(gòu)建
選擇后開始構(gòu)建,因為前面選的是debug模式,因此此時打出來的包就是debug包。
- 查看構(gòu)建產(chǎn)物
可以看出,build目錄下有個debug.apk,說明打包成功。
當然如果要打release包,首先要在build.gradle(module級別)設(shè)置簽名,而后再按上述的步驟將Build Variant 切換成release模式,接下來的操作與debug模式打包一樣的。
release產(chǎn)物如下:
此處沒有設(shè)置簽名,因此打出來的包有unsigned字樣。
2. Flutter通過原生工程打包方式
打開一個Flutter工程,其目錄結(jié)構(gòu)如下:
可以看出,根目錄下有個android的目錄,使用Android Studio 打開該目錄:
這就是一個可正常運行的Android 工程,在此處運行與在Flutter 工程里運行效果是一致的。
只不過Build Variant比普通的Android工程多了個profile模式(性能調(diào)試時使用,平時用不到)。
因此打開Flutter里的android工程,就可以像普通android工程一樣構(gòu)建、打包。
3. Futter工程打包方式
當然如果你不想既打開Flutter工程,又打開Android工程,其實Flutter工程里也可以編譯打包的,歸納為三種方式。
第一種:
查看產(chǎn)物:
注意:
此種方式默認是release模式
第二種:
命令行打包,在Android Studio Terminal里輸入如下命令
flutter build apk --debug //打debug包
flutter build apk --release //打release包
打包的產(chǎn)物依舊是如上flutter-apk目錄。
第三種:
如果嫌每次命令行輸入命令麻煩,而只想將包run在設(shè)備上,此時依然可以借助IDE。
編輯配置。
填上"--debug"表示run的是debug包。
同樣的,填上"--release"表示run的是release包。
最終配置界面顯示如下:
此時即可隨時run不同模式的包。
4. Flutter打包產(chǎn)物分析
debug、release模式下,F(xiàn)lutter業(yè)務(wù)代碼分別以什么樣的形式存在呢?
解壓apk,查看debug模式下的產(chǎn)物:
以.bin文件存在,支持JIT(Just-In-Time),有調(diào)試信息,支持熱重載。
JIT:
定義: JIT 是一種動態(tài)編譯技術(shù),在運行時將代碼從高級語言(如 Dart)即時編譯為機器碼。
用途:
主要用于開發(fā)階段,支持熱重載(Hot Reload)功能。
允許開發(fā)者快速查看代碼更改的效果,而無需重新啟動應用。
特點:
不需要提前編譯整個應用程序。
運行速度較慢,因為編譯是在運行時完成的。
占用更多內(nèi)存,適合開發(fā)環(huán)境而非生產(chǎn)環(huán)境
解壓,查看release模式下的產(chǎn)物:
最終是打包為了.so文件,支持AOT (Ahead-Of-Time )。 AOT :
定義: AOT 是一種靜態(tài)編譯技術(shù),在構(gòu)建階段將代碼從高級語言(如 Dart)提前編譯為原生機器碼。
用途:
主要用于生產(chǎn)環(huán)境,確保應用性能最優(yōu)。
編譯后的代碼可以直接運行在目標設(shè)備上,無需額外的虛擬機或解釋器。
特點:
提供更快的應用啟動時間和運行速度。
減少內(nèi)存占用。
不支持熱重載,但生成的二進制文件更小、更高效
以上就是Flutter打包APK的幾種方式小結(jié)的詳細內(nèi)容,更多關(guān)于Flutter打包APK的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android編程實現(xiàn)自定義PopupMenu樣式示例【顯示圖標與設(shè)置RadioButton圖標】
這篇文章主要介紹了Android編程實現(xiàn)自定義PopupMenu樣式功能,結(jié)合實例形式分析了Android顯示圖標與設(shè)置RadioButton圖標相關(guān)操作技巧,需要的朋友可以參考下2017-01-01Android編程之電池電量信息更新的方法(基于BatteryService實現(xiàn))
這篇文章主要介紹了Android編程之電池電量信息更新的方法,主要基于BatteryService實現(xiàn)該功能,以實例形式分析了Android獲取電池電量的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下2015-11-11Android實現(xiàn)TextView顯示HTML加圖片的方法
這篇文章主要介紹了Android實現(xiàn)TextView顯示HTML加圖片的方法,結(jié)合實例形式分析了TextView控件顯示網(wǎng)絡(luò)圖片的相關(guān)操作技巧,需要的朋友可以參考下2016-07-07