手把手教你編譯Flutter engine

2021-09-24 06:43:45 字數 3168 閱讀 1760

歡迎關注姊妹篇《手把手教你解決flutter engine記憶體洩漏》

flutter已經到了1.5了,小夥伴還沒有使用的趕緊試試吧,如果想更深入的把玩,可以嘗試編譯一下官方的flutter engine,位址在 github.com/flutter/eng…

學習改造 第二篇會介紹怎麼樣改造engine來解決記憶體洩漏問題,滿足自己業務需求。

$ git clone 

$ export path=$path:/path/to/depot_tools

複製**

$ vim .gclient

複製**

內容為

solutions = [

, "deps_file": "deps",

"safesync_url": "",

},]複製**

$ cd engine

複製**

$ gclient sync

複製**

$ cd src/flutter

$ git remote add upstream [email protected]:flutter/engine.git

$ git pull upstream master

複製**

後面的操作不要看官方的了,最好的文件已經江湖失傳了,僅此一篇

2 回滾

$  cat /users/boo/documents/flutter/bin/internal/engine.version 

複製**

如1.5.4 hot fix版的engine版本號,這是乙個commit號

52c7a1e849a170be4b2b2fe34142ca2c0a6fea1f

複製**

bogon:src boo$ git reset --hard 52c7a1e849a170be4b2b2fe34142ca2c0a6fea1f 

head is now at 52c7a1 fix dart/create_updated_flutter_deps script so it actually updates flutter/deps. (#175)

複製**

檢視當前版本號

$  git rev-parse head

複製**

只同步指定commit版本命令

gclient sync --with_branch_heads --with_tags  

複製**

3. 建立engine工程

以ios為例

生成ios裝置用的未經編譯的工程

$ ./flutter/tools/gn --ios --unoptimized

複製**

生成ios裝置用的工程,不帶符號表

./flutter/tools/gn --ios

複製**

生成release工程

$ ./flutter/tools/gn --ios --runtime-mode=release

複製**

生成模擬器版本工程

./flutter/tools/gn --ios --simulator 

複製**

生成模擬器用的未優化版本

./flutter/tools/gn --ios --simulator --unoptimized  

複製**

也可以可以指定cpu

./flutter/tools/gn --runtime-mode=release --ios --ios-cpu=arm64

複製**

4. 編譯

一種編譯模式三千多個檔案,大概乙個半小時

編譯relase工程

$ ninja -c out/ios_release

複製**

編譯裝置用debug模式

ninja -c out/ios_debug && ninja -c out/host_debug

複製**

編譯裝置用debug模式,帶符號

ninja -c out/ios_debug_unopt && ninja -c out/host_debug_unopt

複製**

編譯模擬器用debug模式

ninja -c out/ios_debug_sim_unopt && ninja -c out/host_debug_unopt

複製**

經過漫長的編譯之後,終於可以看到產物了,flutter.framework 就是對應模式的產物 有兩種使用方法,一邊開發一邊測試,或無需修改,直接使用

在工程中使用

flutter run --local-engine-src-path /users/boo/documents/engine/src --local-engine=ios_debug_unopt

複製**

直接拷貝替換掉flutter目錄裡面的engine就可以立即使用了/users/boo/documents/flutter/bin/cache/artifacts/engine

一行**教你解決flutterplatformviews記憶體洩露 by ashawn

手把手教你在flutter專案優雅的使用orm資料庫 by williamwen1986

flutter通用基礎庫flutter_luakit_plugin by williamwen1986

github - flutter_luakit_plugin使用例子 by williamwen1986

手把手教你編譯flutter engine by 共田君

手把手教你解決 flutter engine 記憶體洩漏 by 共田君

持續更新中...

手把手教你編譯安裝MPlayer

這裡介紹的是mplayer1.0pre3的編譯安裝方法。但是其中大部分步驟應該都適用於其他版本。我的系統是rh9,核心是2.4.20 8,開發包全選。step 1 downloading mplayer 1.0pre3 codecs package 官方提供的兩個都要下,如果你想看rm的話 defa...

手把手教你OA選型

oa選型永遠是oa行業的重要焦點,在選型問題上困擾了很多客戶,雲全oa從這幾個方面教你如何選型。了解研發技術 技術是硬道理。只有過關的技術才會研發出過硬的產品。如果技術不過關,後期將會帶來一系列的問題。同時需要考慮技術的先進性。在現如今社會發展日新月異,今天還遙遙領先的管理模式也許明天就會被淘汰。所...

手把手教你玩轉git

使用以上來寫git命令。mkdir xx 建立乙個空目錄 xx指目錄名 pwd 顯示當前目錄的路徑。git init 把當前的目錄變成可以管理的git倉庫,生成隱藏.git檔案。git add xx 把xx檔案新增到暫存區去。git commit m xx 提交檔案 m 後面的是注釋。git sta...