【翻译】 Flutter——配置Engine开发环境

1,338 阅读5分钟

正文

原文地址: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…

  3. 创建一个engine空文件夹用于clone项目并cd到该文件夹下。(文件夹名字也可以自定义,不过部分工具默认使用engine。如果修改名字,需要同步相关配置,故命名engine简单一些)

  4. 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)