-
Notifications
You must be signed in to change notification settings - Fork 123
Open
Description
项目地址https://github.com/lancexin/aspect_frontend_server
现在暂时只支持execute模式
该方法和aspectd的区别
- aspectd不支持flutter 2.5.3,本项目是基于flutter 2.5.3测试
- aspectd的编译需要对dart sdk中的vm进行修改,本项目不需要
- aspectd使用前需要对flutter tools的代码进行修改,本项目只需要替换flutter sdk对应的frontend_server.dart.snapshot即可
- aspectd的实现原理过于复杂,本项目去掉了Call,Inject等用法保留了Execute用法的同时对注入逻辑进行了简化
- aspectd还需要aspect_impl等,本项目可以直接在主程序代码中添加注入代码,也可以用plugin的方式添加
- 本项目不需要引入任何第三方包,用pragma注解完成对应插桩
- 可以有限制支持hot reload,完全支持hot restart,免去了冷重启的烦恼
- 为了性能优化inject方法限制必须是static的
为什么用pragma注解,而不是自定义注解?
本项目是在aot优化后再对字节码进行修改,aot优化后只有白名单中的注解才能被识别到,pragma是在白名单中的注解.
AugustToko and jing-pei
Metadata
Metadata
Assignees
Labels
No labels