在Flutter官方只提供了4中CPU架構(gòu)的so庫懂从,armeabi-v7a授段、arm64-v8a、x86和x86-64番甩,其中x86系列只支持Debug模式侵贵,沒有提供armeabi架構(gòu)的庫,在目前多數(shù)app使用的大量sdk都只提供了armeabi架構(gòu)的庫缘薛,因此開發(fā)者想到的一種方案是對engine進行修改構(gòu)建窍育。
準備工作:
操作系統(tǒng),IDE宴胧,git等這些就不說了漱抓,重點安裝下depot_tools(git的擴展)
以mac為例:
下載
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置depot_tools環(huán)境變量?
$ export PATH=$PATH:/你的下載目錄/depot_tools
獲取源碼和配置環(huán)境
1 ?新建文件目錄,建議命名engine恕齐,在engine目錄下創(chuàng)建 .gclient文件乞娄,如下配置編輯到.gclient里
其中<your_name_here> 用你的 GitHub賬號名稱
2 ?cd engine
3 ?gclient sync (這個命令獲取flutter依賴的源碼,它會自動運行g(shù)it clone和其他命令)
4 ?cd src/flutter(其中src/flutter文件是通過gclient syn命令生成的)
5 ?git remote add upstream git@github.com:flutter/engine.git
6 cd ..
7 brew install ant?
構(gòu)建和運行代碼
Android (cross-compiling交叉編譯)
以下命名沒有特別說明 當前目錄是src
1 git pull upstream master ( 進入src/flutter更新flutter engine)
2 gclinet sync
3 準備構(gòu)建文件
./flutter/tools/gn --android --unoptimized ? (為device-side executables)
./flutter/tools/gn --android --android-cpu x86 --unoptimized ? ? (為 x86模擬器)
./flutter/tools/gn --android --android-cpu x64 --unoptimized ( 為x64 模擬器)
./flutter/tools/gn --unoptimized (為host-side executables)
4 構(gòu)建可執(zhí)行文件
ninja -C out/android_debug_unopt ? (為device-side executables)
ninja -C out/android_debug_unopt_x86(為 x86模擬器)
ninja -C out/android_debug_unopt_x64?( 為x64 模擬器)
ninja -C out/host_debug_unopt?(為host-side executables)
這些命令可以組合,比如?ninja -C out/android_debug_unopt && ninja -C out/host_debug_unopt
編譯完成后可以在?out/android_debug_unopt 一系列目錄下找到 flutter.jar文件
修改源碼構(gòu)建支持arm架構(gòu)參考?https://github.com/flutter/engine/wiki/Android-Builds-Supporting-armeabi
官方文章:https://github.com/flutter/engine/blob/master/CONTRIBUTING.md