deop_tools
工具gclient
命令同步好flutter engine
源码进入engine/src
目录
创建flutter engine
构建文件
模式 | 命令 | 生成目录 |
---|---|---|
host debug | ./flutter/tools/gn --no-goma --unoptimized | out/host_debug_unopt |
真机debug | ./flutter/tools/gn --no-goma --ios --unoptimized | out/ios_debug_unopt |
真机release | ./flutter/tools/gn --no-goma --ios --runtime-mode=release | out/ios_release |
模拟器debug | ./flutter/tools/gn --no-goma --ios --simulator --unoptimized | out/ios_debug_sim_unopt |
参数说明:
--unoptimized debug模式
--runtime-mode=release release模式
--ios iOS平台
--simulator 模拟器
生成flutter engine
工程文件
按需执行以下所需的版本类型即可。
host_debug_unopt是必须要编译的,否则在执行本地引擎时就会报错host_xxx找不到
// 编译host部分,必须要执行
ninja -C out/host_debug_unopt
// 编译模拟器debug版本
ninja -C out/ios_debug_sim_unopt
// 编译真机debug版本
ninja -C out/ios_debug_unopt
// 编译真机release版本
ninja -C out/ios_release
如果ninja命令执行,出现错误:
depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH.
说明ninja工具安装有问题,这时候需要回到depot_tools
安装目录,将commit-id
回滚到5a0f43aebe00a947546b8dfc966064b8d1a50a6f
命令执行完成后,就会在engine/src/out
下产生3个目录,想要调试对应的engine
就拉对应的目录下的flutter_engine
工程到自己创建的工程内
创建flutter
测试工程
在xcode
界面中,将要调试模式目录下的flutter_engine
工程拖入到测试工程中
特别注意:在拖动时,要保证
flutter_engine
工程没有在xcode
中打开,否则会出现拖进去后,flutter_engine
工程无法展开的问题
修改Generated.xcconfig
中如下配置
# 如果没有找到对应的配置项,就手动添加
FLUTTER_FRAMEWORK_DIR=/path/to/engine/src/out/ios_debug_sim_unopt
FLUTTER_ENGINE=/path/to/engine/src
LOCAL_ENGINE=ios_debug_sim_unopt
vscode
中的launch.json
配置文件中新增如下配置,然后跑一下debug
就能同步到Generated.xcconfig
文件中 {
"name": "本地engine调试",
"type": "dart",
"request": "launch",
"program": "example/lib/main.dart",
"args": [
"--local-engine-src-path",
"/path/to/engine/src",
"--local-engine",
"ios_debug_sim_unopt"
]
},
打开FlutterViewController.m
文件,就可以下断点了
修改SDK内的代码,需要重新执行ninja -C
命令去更新产物,然后再重新运行测试工程
https://tech.qimao.com/zi-ding-yi-flutter-yin-qing-liu-cheng/