正文
原文地址:Setting up the Engine development environment · flutter/flutter Wiki (github.com)
如果你已經配置好環境並且構建過engine,在此僅僅是想回顧一下編譯程式碼,可以參見:
Compiling the engine的翻譯稍後補齊。
複製程式碼
確保已經新增以下依賴:
-
Linux, macOS, or Windows。
-
Linux支援交叉編譯,生成Android,Fuchsia產物,但是不支援IOS。
-
macOS支援交叉編譯,生成 Android和IOS產物。
-
windows不支援交叉編譯生成Android,Fuchsia或IOS。(Mac 已在路上....)
-
-
git(原始碼的版本控制).
-
一個IDE。在編輯engine時,關於語法高亮(可關聯跳轉)的設定,請參見本頁底部。
-
一個ssh客戶端(用於github鑑權)。
-
Chromium's depot_tools (確保配置了環境變數)。使用其中的gclient。
-
Python(我們絕大多數的工具都會用到它,包括
gclient
)。 -
macOS和Linux 需要: curl and unzip (用於
gclient sync
)。 -
Windows 需要:
-
Visual Studio 2017 或者更新的版本 (僅非谷歌使用者需要)
-
Windows 10 SDK (僅非谷歌使用者需要).
- 確保安裝了
Debugging Tools for Windows
- 確保安裝了
-
-
macOS 需要: 最新版的Xcode。
-
對於谷歌使用者(Googlers)的建議: Goma 分散式構建。 具體安裝方法見compiling page。
goma可以增加構建速度。 複製程式碼
你不需要安裝Dart, Dart工具鏈會在getting the code
階段自動下載。同樣的,Android SDK會在gclient sync
階段安裝。
按照下面的步驟配置你的環境:
-
使用你自己的github賬號Fork github.com/flutter/eng… 。 如果你已經Fork,且配置了一套全新的開發環境,請確保你Fork的倉庫已經更新,以避免使用了遠古版本。不要本地
clone
該倉庫,指令碼會負責這些。 -
如果你還沒有配置
SSH Key
,請參考下面這篇文章:
-
建立一個
engine
空資料夾用於clone
專案並cd
到該資料夾下。(資料夾名字也可以自定義,不過部分工具預設使用engine
。如果修改名字,需要同步相關配置,故命名engine
簡單一些) -
在
engine
資料夾中建立包含如下內容的.gclient
檔案,並替換<your_name_here>
為你的github
賬號:
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:<your_name_here>/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
複製程式碼
-
在
engine
目錄下,執行gclient sync
。 其會拉取Flutter
依賴的所有原始碼。切勿打斷它的執行,不然造成了不一致就蛋疼了。(該過程中還會自動執行git clone
) -
增加一個上游倉庫:
-
cd src/flutter
(這個路徑會在gclient sync
後建立於你的engine目錄下。) -
git remote add upstream git@github.com:flutter/engine.git
(這樣當你執行git fetch
時,將會從flutter/engine
倉庫拉取,而非你clone
的,其它亦如此。) -
cd ..
(返回上級src
目錄。)
-
-
如果你使用的是Linux,下面的內容也許對你安裝所需要的依賴有所幫助。 注意:這些指令碼是針對特定版本的,並不能保證所有版本的配置都能正常工作。如果指令碼失敗了,你可能需要自行補充那些缺失的包。如果需要用於生產,那麼可以自行更新它們(指令碼),但是更為簡單的方式是直接安裝你所需要的
packages
,特別是install-build-deps.sh
這個指令碼。sudo ./build/install-build-deps-android.sh
sudo ./build/install-build-deps.sh
sudo ./flutter/build/install-build-deps-linux-desktop.sh
-
如果你使用的是Mac:
- 安裝Oracle's Java JDK, 版本 1.8 以上
-
如果你也打算在buildroot倉庫上工作,並已擁有本地的
checkout
,那麼在src
目錄內,執行如下命令以更新你的git remotes
:
git remote rename origin upstream
git remote add origin git@github.com:<your_name_here>/buildroot.git
複製程式碼
下一步
- Compiling the engine 文章將說明如何真正的構建你所擁有的
engine code
. - The flutter tool 有一節將說明如何使用你的自定義engine。
編輯器自動補全功能
Xcode [Objective-C++]
Mac,直接用Xcode(如: open out/host_debug_unopt/products.xcodeproj
)。
(我本是堅定的windows...如此種種,我開始動搖了...)
複製程式碼
VSCode with C/C++ Intellisense [C/C++]
通過 C/C++ extension VSCode可以提供一些IDE特性。這些基礎特性在安裝時新增,並且不需要額外配置。但是也會有一些問題,如header找不到錯誤
以及跳轉到錯誤的方法定義
。
Intellisense 可通過compile_commands.json
實現強大的功能。以下兩種方法都可以實現:通過symlink
將src/out/compile_commands.json
連線到src
下的專案專案根部 或 在c_cpp_properties.json
中提供它的絕對路徑。 詳見"compile commands" in the c_cpp_properties.json reference。此文將應該會解決上述的問題。
需要在VSCode中增加對Java的支援(engine開發中),見"Using VSCode as an IDE for the Android Embedding"。
cquery/ccls (大多數編輯器) [C/C++/Objective-C++]
另外,cquery 和衍生的 ccls 是IDE支援的高可擴充性的語言服務外掛如跳轉到定義位置
,呼叫層級
,自動補全
,查詢引用
等,在我們的engine repo
中效果非常好。
他們(github.com/cquery-proj…) supports 支援 VSCode, emacs, vim 等編輯器。
配置:
-
安裝
cquery
i.
brew install cquery
orbrew install ccls
on osx; or -
生成
compile_commands.json
。我們的GN tool
也可以做到,通過它的src/flutter/tools/gn --ios --unoptimized
。 -
安裝一個編輯器外掛(擴充套件) 如VSCode-cquery 或者 vscode-ccls
i.
VSCode-query
和vscode-ccls
需要compile_commands.json
存放到專案根部。symlink
或者複製src/out/compile_commands.json
到src/
或src/flutter
資料夾,具體看你想開啟哪個。ii. 跟著Setting up the extension進一步配置
VSCode-query
。
將 VSCode 用於 Android Embedding 開發 [Java]
-
安裝
vscjava.vscode-java-pack
和vscjava.vscode-java-dependency
外掛。 -
右鍵單擊
engine
資料夾下的shell/platform/android
資料夾,然後點選將資料夾新增到Java Path下
。這將會建立一個匿名工作空間並將那些檔案從"syntax mode" 切換到"compile mode"
。到這裡,你會看到一大堆錯誤,因為外部依賴沒有匯入。 -
在視窗(
Explorer view
)中找到Java Dependencies
皮膚。如果隱藏了,就使用"Explorer: Focus on Java Dependencies View"
命令。 -
重新整理視窗並找到
"flutter_*"
專案。裡面應該有個"_/shell/platform/android"
原始檔夾。 -
在
Referenced Libraries
旁邊的節點,點選+
並進入engine/src/third_party/android_embedding_dependencies
然後新增整個資料夾。此項操作等價於下面的內容新增到VSCode
的settings.json
中。
"java.project.referencedLibraries": [
"{path to engine}/src/third_party/android_embedding_dependencies/lib/**/*.jar"
]
複製程式碼
- 如果你已經有
shell/platform/android/.classpath
,刪除它。
結束
至此配置Engine開發環境
相關的內容已經翻譯完成了,謝謝大家的閱讀,如有錯誤還請指出。
原文地址:Setting up the Engine development environment · flutter/flutter Wiki (github.com)