【翻譯】 Flutter——配置Engine開發環境

吉哈達發表於2021-08-21

正文

原文地址:Setting up the Engine development environment · flutter/flutter Wiki (github.com)

如果你已經配置好環境並且構建過engine,在此僅僅是想回顧一下編譯程式碼,可以參見:

Compiling the 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 階段安裝。

按照下面的步驟配置你的環境:

  1. 使用你自己的github賬號Fork github.com/flutter/eng… 。 如果你已經Fork,且配置了一套全新的開發環境,請確保你Fork的倉庫已經更新,以避免使用了遠古版本。不要本地clone該倉庫,指令碼會負責這些。

  2. 如果你還沒有配置SSH Key,請參考下面這篇文章:

help.github.com/articles/ge…

  1. 建立一個engine空資料夾用於clone專案並cd到該資料夾下。(資料夾名字也可以自定義,不過部分工具預設使用engine。如果修改名字,需要同步相關配置,故命名engine簡單一些)

  2. 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": "",
  },
]
複製程式碼
  1. engine目錄下,執行gclient sync。 其會拉取Flutter依賴的所有原始碼。切勿打斷它的執行,不然造成了不一致就蛋疼了。(該過程中還會自動執行git clone)

  2. 增加一個上游倉庫:

    • cd src/flutter (這個路徑會在gclient sync後建立於你的engine目錄下。)

    • git remote add upstream git@github.com:flutter/engine.git (這樣當你執行git fetch時,將會從flutter/engine倉庫拉取,而非你clone的,其它亦如此。)

    • cd ..(返回上級src目錄。)

  3. 如果你使用的是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
  4. 如果你使用的是Mac:

    • 安裝Oracle's Java JDK, 版本 1.8 以上
  5. 如果你也打算在buildroot倉庫上工作,並已擁有本地的checkout,那麼在src目錄內,執行如下命令以更新你的git remotes

git remote rename origin upstream
git remote add origin git@github.com:<your_name_here>/buildroot.git
複製程式碼

下一步

編輯器自動補全功能

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實現強大的功能。以下兩種方法都可以實現:通過symlinksrc/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 等編輯器。

配置:

  1. 安裝 cquery

    i. brew install cquery or brew install ccls on osx; or

    ii. Build from source

  2. 生成compile_commands.json。我們的GN tool也可以做到,通過它的src/flutter/tools/gn --ios --unoptimized

  3. 安裝一個編輯器外掛(擴充套件) 如VSCode-cquery 或者 vscode-ccls

    i.VSCode-queryvscode-ccls需要compile_commands.json存放到專案根部。 symlink 或者複製src/out/compile_commands.jsonsrc/src/flutter資料夾,具體看你想開啟哪個。

    ii. 跟著Setting up the extension進一步配置VSCode-query

les.gif

將 VSCode 用於 Android Embedding 開發 [Java]

  1. 安裝 vscjava.vscode-java-packvscjava.vscode-java-dependency 外掛。

  2. 右鍵單擊engine資料夾下的shell/platform/android資料夾,然後點選將資料夾新增到Java Path下。這將會建立一個匿名工作空間並將那些檔案從"syntax mode" 切換到 "compile mode"。到這裡,你會看到一大堆錯誤,因為外部依賴沒有匯入。

  3. 在視窗(Explorer view)中找到Java Dependencies皮膚。如果隱藏了,就使用"Explorer: Focus on Java Dependencies View"命令。

  4. 重新整理視窗並找到"flutter_*"專案。裡面應該有個"_/shell/platform/android"原始檔夾。

  5. Referenced Libraries旁邊的節點,點選+並進入engine/src/third_party/android_embedding_dependencies然後新增整個資料夾。此項操作等價於下面的內容新增到VSCodesettings.json中。

"java.project.referencedLibraries": [
  "{path to engine}/src/third_party/android_embedding_dependencies/lib/**/*.jar"
]
複製程式碼
  1. 如果你已經有shell/platform/android/.classpath,刪除它。

結束

至此配置Engine開發環境相關的內容已經翻譯完成了,謝謝大家的閱讀,如有錯誤還請指出。

原文地址:Setting up the Engine development environment · flutter/flutter Wiki (github.com)

相關文章