Skip to main content

Flutter Aspect 集成

由于 Dart 语言未提供在编译期修改代码的整套 API,所以 Flutter SDK 的无埋点需要通过修改 Dart 源码方式织入外部的 Transformer 能使其在 dart 代码优化前参与到 Flutter 代码的编译中;在 Flutter 的源码中添加整套 Transformer 流程的 API,使其实现 Aspect 功能。

基于上述说明,我们的 Flutter SDK 无埋点方案基于修改 Flutter 源代码的方式进行,需要拉取 GitHub 上的 Flutter SDK。 具体安装可以参考官方引导:Install Flutter From Github

然后再根据你开发使用的 Flutter 版本,切换到相应的 tag 分支上。

info

目前支持 Flutter SDK 版本为 v3.3.0v3.3.9v3.7.0v3.7.2v3.7.8v3.7.9v3.10.4v3.10.5v3.13.2v3.13.9v3.16.0v3.16.8v3.16.9v3.19.0v3.19.5v3.19.6v3.22.1v3.24.4.

后续将随着 Flutter SDK 的更新会持续推出新的版本,若需要支持特定的 Flutter 版本,请在 Github Issues 中提交请求或者向客户成功经理咨询方案。

安装方式

共有两种方式选择,一是手动替换文件,二是下载一键替换脚本。

访问源码

请访问我们的 Growingio-Dart-Frontend,该项目的不同分支代表不同的 Flutter 版本,请根据自己项目的 Flutter 版本下载对应 tag 的 frontend_server.dart.snapshot. 比如说 Flutter 3.16.9 版本,需要下载 tag 3.16.9 下的 frontend_server.dart.snapshot 文件。

具体位置为 /lib/flutter_frontend_server/frontend_server.dart.snapshot

另外,flutter 3.19.0 版本及以上还需要下载对应您当前平台架构的 frontend_server_aot.dart.snapshot 文件。

具体位置为 /lib/flutter_frontend_server/<您当前的平台架构,如darwin_arm64>/frontend_server_aot.dart.snapshot

覆盖源文件

需要在 Flutter SDK 下进行文件替换 (若文件存在则替换),位置分别为:

1. 替换 frontend_server.dart.snapshot

  • macos: <flutter sdk dir>/bin/cache/artifacts/engine/darwin-x64/frontend_server.dart.snapshot
  • windows: <flutter sdk dir>/bin/cache/artifacts/engine/windows-x64/frontend_server.dart.snapshot
  • linux: <flutter sdk dir>/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot
  • <flutter sdk dir>/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot

2. 替换 frontend_server_aot.dart.snapshot

  • Flutter SDK 版本号大于等于 3.24.0:
    • macos: <flutter sdk dir>/bin/cache/artifacts/engine/darwin-x64/frontend_server_aot.dart.snapshot
    • windows: <flutter sdk dir>/bin/cache/artifacts/engine/windows-x64/frontend_server_aot.dart.snapshot
    • linux: <flutter sdk dir>/bin/cache/artifacts/engine/linux-x64/frontend_server_aot.dart.snapshot
  • Flutter SDK 版本号大于等于 3.19.0: <flutter sdk dir>/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot

清除缓存

覆盖 frontend_server.dart.snapshotfrontend_server_aot.dart.snapshot 后需要清理缓存

flutter clean

若是已经集成 Flutter 无埋点插件,重新编译后,无埋点就能正常运行了。

卸载无埋点

若是需要恢复至集成无埋点之前的状态,可以到 <flutter sdk dir> 下运行以下命令,恢复原来的文件。

git reset --hard 
或者
git reset --hard <tag>

rm -rf bin/cache ## 用来删除缓存