正文
原文地址: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,请参考下面这篇文章: help.github.com/articles/ge…。 -
创建一个
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.shsudo ./build/install-build-deps.shsudo ./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 等编辑器。
配置:
-
安装
cqueryi.
brew install cqueryorbrew install cclson 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)