首先看下官方demo的目录结构
一、入口
1、main方法
import 'package:example/main.dart' as app;
import 'aop_impl.dart';
void main()=> app.main();
aop.dart引入import 'package:example/main.dart' as app;,这使得编译aop.dart时可包含整个example工程的所有代码。
2、依赖关系
依赖了aspectd本身和example
aspectd:
path: ../
# git:
# url: https://github.com/XianyuTech/aspectd.git
# ref: stable/v1.22.2
example:
path: ../example
3、编译校验
项目的入口在aspectd_impl.dart文件的main方法中,example虽然有相关的demo页面但是aspectd要做hook操作,所以修改了项目的入口,每次编译都会校验是否存在aspectd_impl目录
如何使修改代码生效 对于不同位置的代码,修改后让其生效需要做的不同。
分为example、aspect_impl、aspectd下的lib example中的代码
当只修改了example中的代码时,可以直接运行就会生效 aspect_impl中的代码
当修改了aspect_impl中的代码时,需要分别在aspect_impl和example中执行flutter clean和flutter pub get之后才能生效。
当修改了aspectd下的lib代码后,需要将flutter_frontend_server目录下的frontend_server.dart.snapshot文件删除掉,然后分别在aspect_impl和example中执行flutter clean和flutter pub get之后才能生效。