Flutter Engine调试

333 阅读1分钟

安装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

截屏2022-11-07 18.55.50.png

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工程中就可以调试了

截屏2022-11-07 18.59.42.png

截屏2022-11-07 18.59.52.png

参考:developer.aliyun.com/article/728…