Flutter打包APK的幾種方式小結(jié)
前言
Flutter打包不同于RN,F(xiàn)lutter可以在Android Studio里編寫Flutter代碼并最終打包為APK,本篇主要闡述涉及到的幾種打包方式。
通過(guò)本篇文章,你將了解到:
Android原生打包APK方式
Flutter通過(guò)原生工程打包方式
Futter工程打包方式
Flutter打包產(chǎn)物分析
1. Android原生打包APK方式
以原生Android工程為例。
- 設(shè)置編譯模式

選擇變體,通常有debug和release模式(可以新增不同的模式),默認(rèn)是debug模式。
我們平時(shí)點(diǎn)擊Run到設(shè)備上就是debug模式。
- 開始構(gòu)建

選擇后開始構(gòu)建,因?yàn)榍懊孢x的是debug模式,因此此時(shí)打出來(lái)的包就是debug包。
- 查看構(gòu)建產(chǎn)物

可以看出,build目錄下有個(gè)debug.apk,說(shuō)明打包成功。
當(dāng)然如果要打release包,首先要在build.gradle(module級(jí)別)設(shè)置簽名,而后再按上述的步驟將Build Variant 切換成release模式,接下來(lái)的操作與debug模式打包一樣的。
release產(chǎn)物如下:

此處沒有設(shè)置簽名,因此打出來(lái)的包有unsigned字樣。
2. Flutter通過(guò)原生工程打包方式
打開一個(gè)Flutter工程,其目錄結(jié)構(gòu)如下:

可以看出,根目錄下有個(gè)android的目錄,使用Android Studio 打開該目錄:

這就是一個(gè)可正常運(yùn)行的Android 工程,在此處運(yùn)行與在Flutter 工程里運(yùn)行效果是一致的。
只不過(guò)Build Variant比普通的Android工程多了個(gè)profile模式(性能調(diào)試時(shí)使用,平時(shí)用不到)。
因此打開Flutter里的android工程,就可以像普通android工程一樣構(gòu)建、打包。
3. Futter工程打包方式
當(dāng)然如果你不想既打開Flutter工程,又打開Android工程,其實(shí)Flutter工程里也可以編譯打包的,歸納為三種方式。
第一種:

查看產(chǎn)物:

注意:
此種方式默認(rèn)是release模式
第二種:
命令行打包,在Android Studio Terminal里輸入如下命令
flutter build apk --debug //打debug包
flutter build apk --release //打release包
打包的產(chǎn)物依舊是如上flutter-apk目錄。
第三種:
如果嫌每次命令行輸入命令麻煩,而只想將包run在設(shè)備上,此時(shí)依然可以借助IDE。
編輯配置。

填上"--debug"表示run的是debug包。

同樣的,填上"--release"表示run的是release包。
最終配置界面顯示如下:

此時(shí)即可隨時(shí)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 是一種動(dòng)態(tài)編譯技術(shù),在運(yùn)行時(shí)將代碼從高級(jí)語(yǔ)言(如 Dart)即時(shí)編譯為機(jī)器碼。
用途:
主要用于開發(fā)階段,支持熱重載(Hot Reload)功能。
允許開發(fā)者快速查看代碼更改的效果,而無(wú)需重新啟動(dòng)應(yīng)用。
特點(diǎn):
不需要提前編譯整個(gè)應(yīng)用程序。
運(yùn)行速度較慢,因?yàn)榫幾g是在運(yùn)行時(shí)完成的。
占用更多內(nèi)存,適合開發(fā)環(huán)境而非生產(chǎn)環(huán)境
解壓,查看release模式下的產(chǎn)物:

最終是打包為了.so文件,支持AOT (Ahead-Of-Time )。 AOT :
定義: AOT 是一種靜態(tài)編譯技術(shù),在構(gòu)建階段將代碼從高級(jí)語(yǔ)言(如 Dart)提前編譯為原生機(jī)器碼。
用途:
主要用于生產(chǎn)環(huán)境,確保應(yīng)用性能最優(yōu)。
編譯后的代碼可以直接運(yùn)行在目標(biāo)設(shè)備上,無(wú)需額外的虛擬機(jī)或解釋器。
特點(diǎn):
提供更快的應(yīng)用啟動(dòng)時(shí)間和運(yùn)行速度。
減少內(nèi)存占用。
不支持熱重載,但生成的二進(jìn)制文件更小、更高效
以上就是Flutter打包APK的幾種方式小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Flutter打包APK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
內(nèi)存泄漏檢測(cè)工具LeakCanary源碼解析
這篇文章主要為大家介紹了內(nèi)存泄漏檢測(cè)工具LeakCanary源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android編程實(shí)現(xiàn)自定義PopupMenu樣式示例【顯示圖標(biāo)與設(shè)置RadioButton圖標(biāo)】
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義PopupMenu樣式功能,結(jié)合實(shí)例形式分析了Android顯示圖標(biāo)與設(shè)置RadioButton圖標(biāo)相關(guān)操作技巧,需要的朋友可以參考下2017-01-01
Android編程之電池電量信息更新的方法(基于BatteryService實(shí)現(xiàn))
這篇文章主要介紹了Android編程之電池電量信息更新的方法,主要基于BatteryService實(shí)現(xiàn)該功能,以實(shí)例形式分析了Android獲取電池電量的具體步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-11-11
Android實(shí)現(xiàn)TextView顯示HTML加圖片的方法
這篇文章主要介紹了Android實(shí)現(xiàn)TextView顯示HTML加圖片的方法,結(jié)合實(shí)例形式分析了TextView控件顯示網(wǎng)絡(luò)圖片的相關(guān)操作技巧,需要的朋友可以參考下2016-07-07
巧用ViewPager實(shí)現(xiàn)駕考寶典做題翻頁(yè)效果
本文主要介紹巧用ViewPager實(shí)現(xiàn)駕考寶典做題翻頁(yè)效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
Android把商品添加到購(gòu)物車的動(dòng)畫效果(貝塞爾曲線)
本篇文章介紹了Android把商品添加到購(gòu)物車的動(dòng)畫效果,這個(gè)在很多項(xiàng)目中都用的到,具有一定的參考價(jià)值,有需要的可以了解一下。2016-10-10
android Activity線性布局和表格布局實(shí)例講解
在activity的布局中,線性布局和表格布局是最簡(jiǎn)單的,這次分別從線性布局,表格布局以及線性布局和表格混合布局做了實(shí)驗(yàn)2013-11-11

