问题发现
使用58fair 工具,执行build 命令
flutter packages pub run build_runner build --delete-conflicting-outputs
发现没有自动生成generated.fair.dart 文件。 从这里出发,研究一下如何用android studio debug 调试
flutter packages pub run build_runner build
这个flutter的build命令。
fair_compiler
首先看flutter 工程,下面代码是接入fair工具的配置:
name: xxx
description: wuba Flutter module.
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=3.0.0 <4.0.0"
dependencies:
flutter:
sdk: flutter
fair_pushy:
git:
url: https://github.com/wuba/FairPushy.git
ref: main
path: sdk
fair: 2.6.2-dev.2
dev_dependencies:
shared_preferences_foundation: 2.1.0
flutter_test:
sdk: flutter
fair_compiler: ^1.7.2
build_runner: ^2.1.2
dependency_overrides:
shared_preferences_android: 2.0.14
fair_version:
git:
url: https://github.com/wuba/fair.git
ref: main
path: flutter_version/flutter_3_0_0
analyzer: 5.6.0
collection: 1.17.0
flutter:
assets:
- assets/
- assets/fair/
这里主要是 需要调试fair_compiler 这个代码。
如何调试
那么如何调试flutter packages pub run build_runner build 呢
flutter clean
flutter pub get
flutter packages pub run build_runner build --delete-conflicting-outputs
通过以上步骤,在flutter工程目录下将会生成
xx/.dart_tool/build/entrypoint/build.dart
将build.dart拷贝到项目主目录 使用Android Studio创建一个 dart command line app命令行程序,创建方式如下:
在项目下面代码位置如下出打上断点:
点击Debug ‘build.dart’ 这样就进入到我们需要研究的部分了。
代码分析
用这种调试运行build.dart的方式,遇到一个问题,总是在下面这行代码就退出:
var assets = await buildStep
.findAssets(Glob('lib/**.fair.ignore', recursive: true))
.toList();
if (assets.isEmpty) {
return;
}
运行debug build.dart 的终端输出内容如下:
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 40ms
[SEVERE] Failed after 12.0s
Process finished with exit code 1
那么这个问题怎么解决?下回分解