$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:/path/to/depot_tools
复制代码
记得长期有效用source了。ios
Python v2.7git
gclientgithub
Flutter SDK 地址:github.com/flutter/flu…vim
Fork github.com/flutter/eng… 为了后续修改方便,因此使用Fork 注意:配置ssh key,后面gc sync时候须要使用ssh的下载方式。xcode
新建engine文件夹bash
编辑.gclient 在engine文件夹下编辑.gclient文件架构
$ vim .gclient
ssh
内容:工具
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:<你的名字>/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
复制代码
进入engine目录,执行 $ gclient sync
获取Flutter全部依赖。性能
同步Flutter Engine代码
$ cd src/flutter
$ git remote add upstream git@github.com:flutter/engine.git
$ git pull upstream master
复制代码
在engine/src/flutter 目录下面,获取当前Flutter SDK所须要的版本号。 cat $FLUTTER_SDK_PATH/bin/internal/engine.version
reset Flutter Engine的commit到指定的SHA-1。 git reset --hard ${engine.version}
最后gclient同步Engine的依赖。 gclient sync --with_branch_heads --with_tags
Flutter Engine编译是使用ninja的,在以前的deptools工具包里面有。
编译release: $ 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
编译模式器使用的debug模式:ninja -C out/ios_debug_sim_unopt && ninja -C out/host_debug_unopt
调试的时候使用官方推荐的直接用lldb调试很复杂,因此我推荐你们使用Xcode直接嵌入工程方式。
FLUTTER_ROOT=${FlutterSDK 路径}
FLUTTER_APPLICATION_PATH=${Demo工程路径}
FLUTTER_TARGET=${Demo工程路径}/lib/main.dart
FLUTTER_BUILD_DIR=build
SYMROOT=${SOURCE_ROOT}/../build/ios
FLUTTER_FRAMEWORK_DIR=${Flutter_Engine代码路径}/src/out/ios_debug_sim_unopt
FLUTTER_BUILD_NAME=1.0.0
FLUTTER_BUILD_NUMBER=1
FLUTTER_ENGINE=${Flutter_Engine代码路径}
LOCAL_ENGINE=${输出的路径(ios_debug_sim_unopt)}
ARCHS=${支持的架构(arm64)}
复制代码
最后这样就能够直接断点到Flutter Engine里面,我这边发现Flutter对于Webpng在iOS平台的优化有限,最后咱们这边的多图列表须要再深刻优化。
感谢
手把手教你编译Flutter engine www.jianshu.com/p/6519ed563…
Compiling the engine github.com/flutter/flu…