安装depot_tools
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置depot_tools环境变量
export PATH="$PATH:$HOME/development/depot_tools"
创建调试目录engine,在该目录下创建.gclient配置文件
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "https://github.com/flutter/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
}
]
在engine目录下执行gclient sync,执行时间很长,最好开代理。打开活动监视器在网络中搜索.cipd_client可以查看该活动是否完成。
gclient sync之后,engine/src/flutter目录下为flutter engine引擎。从官方下载Flutter Framework。
// 在flutter framework中查看对应flutter engine的版本 a4ff2c53d84ca78702bc3be6c7ef0788ffca01d3
$ cat bin/internal/engine.version
在engine/src/flutter 切换对应flutter framework的分支,并reset到对应的commit
$ git branch --all
$ git checkout -b flutter-3.3-candidate.2 origin/flutter-3.3-candidate.2
$ git reset --hard a4ff2c53d84ca78702bc3be6c7ef0788ffca01d3
再次执行gclient sync更新依赖,这次执行相对较快。
engine/src目录下编译engine iOS产物
$ ./flutter/tools/gn --ios --simulator --unoptimized
$ ./flutter/tools/gn --unoptimized
$ ninja -C out/ios_debug_sim_unopt && ninja -C out/host_debug_unopt
创建flutter demo工程,修改本地引擎,generated.xcconfig文件内会多两个配置
LOCAL_ENGINE=ios_debug_sim_unopt
FLUTTER_ENGINE=/Users/ctrip/Desktop/flutterEngine/src
flutter run --local-engine-src-path=/Users/ctrip/Desktop/flutterEngine/src --local-engine=ios_debug_sim_unopt
将scr/out/ios_debug_sim_unopt文件内的name.xcodeproj文件拖入到demo的iOS工程中就可以调试了