AspectD 目录分析

71 阅读1分钟

首先看下官方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之后才能生效。