美文网首页
iOS Flutter Engine源码调试

iOS Flutter Engine源码调试

作者: sytuzhouyong | 来源:发表于2023-02-23 14:43 被阅读0次

1. 前提:

  1. 已将成功安装deop_tools工具
  2. 已经通过gclient命令同步好flutter engine源码

2. 步骤:

  1. 创建flutter engine构建文件
    真机文件:
    ./flutter/tools/gn --unoptimized --no-goma --ios
    模拟器文件:
    ./flutter/tools/gn --unoptimized --no-goma --simulator
    参数说明:

    debug模式:--unoptimized
    release模式:--runtime-mode=release
    真机:--ios
    模拟器:--simulator

  2. 生成flutter engine工程文件

    ninja -C out/host_debug_unopt
          host_debug_unopt是必须要编译的,否则在执行本地引擎时就会报错host_xxx找不到
    ninja -C out/ios_debug_sim_unopt
    ninja -C out/ios_debug_unopt
    

    如果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工程到自己创建的工程内

  3. 创建flutter测试工程
    xcode界面中,将要调试模式目录下的flutter_engine工程拖入到测试工程中

    特别注意:在拖动时,要保证flutter_engine工程没有在xcode中打开,否则会出现拖进去后,flutter_engine工程无法展开的问题

  4. 修改Generated.xcconfig中如下配置

    1. 手动修改
         FLUTTER_FRAMEWORK_DIR=/path/to/engine/src/out/ios_debug_sim_unopt
         FLUTTER_ENGINE=/path/to/engine/src
         LOCAL_ENGINE=ios_debug_sim_unopt
    
    1. 自动修改
      在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"
            ]
        },
      
  5. 打开FlutterViewController.m文件,就可以下断点了

3. 参考资料

https://tech.qimao.com/zi-ding-yi-flutter-yin-qing-liu-cheng/

相关文章

网友评论

      本文标题:iOS Flutter Engine源码调试

      本文链接:https://www.haomeiwen.com/subject/pizzkdtx.html