歡迎關注姊妹篇《手把手教你解決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 git@github.com:flutter/engine.git
$ git pull upstream master
複製**
2 回滾
如1.5.4 hot fix版的engine版本號,這是乙個commit號$ cat /users/boo/documents/flutter/bin/internal/engine.version
複製**
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)
複製**
只同步指定commit版本命令$ git rev-parse head
複製**
3. 建立engine工程gclient sync --with_branch_heads --with_tags
複製**
以ios為例
生成ios裝置用的未經編譯的工程
生成ios裝置用的工程,不帶符號表$ ./flutter/tools/gn --ios --unoptimized
複製**
生成release工程./flutter/tools/gn --ios
複製**
生成模擬器版本工程$ ./flutter/tools/gn --ios --runtime-mode=release
複製**
生成模擬器用的未優化版本./flutter/tools/gn --ios --simulator
複製**
也可以可以指定cpu./flutter/tools/gn --ios --simulator --unoptimized
複製**
4. 編譯./flutter/tools/gn --runtime-mode=release --ios --ios-cpu=arm64
複製**
一種編譯模式三千多個檔案,大概乙個半小時
編譯relase工程
編譯裝置用debug模式$ 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
複製**
經過漫長的編譯之後,終於可以看到產物了,flutter.framework 就是對應模式的產物 有兩種使用方法,一邊開發一邊測試,或無需修改,直接使用ninja -c out/ios_debug_sim_unopt && ninja -c out/host_debug_unopt
複製**
在工程中使用
直接拷貝替換掉flutter目錄裡面的engine就可以立即使用了flutter run --local-engine-src-path /users/boo/documents/engine/src --local-engine=ios_debug_unopt
複製**
/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...