Aspectd的使用

232 阅读1分钟

1、切换本地flutter版本,可用 stable 1.22.1版本

2、git clone github.com/XianyuTech/… 分支选对应的 stable 1.22.1版本

3、在aspectd 的目录下命令创建aspectd_impl

flutter create --template=package aspectd_impl

4、在aspectd_impl 添加 aspectd和example 的依赖

aspectd:
    git:
        url: https://github.com/XianyuTech/aspectd.git
        ref: stable/v1.22.1
    example:
        path: ../example

5、在aspectd_impl、example及根目录下执行pub get

flutter packages get

编译失败,可先尝试将android编译成功再重试

6、切换到aspectd目录下,0001-aspectd.patch文件在aspectd源码中。

git apply --3way xxx/aspectD/0001-aspectD.path

7、删除原有flutter sdk目录下的缓存文件

rm bin/cache/flutter_tools.stamp

8、重新构建新的flutter编译工具

flutter doctor -v

会重新生成flutter_tools.stamp文件

9、运行aspectd项目

flutter run --debug --verbose

可能出现的问题 package  get 失败:

aspectd源码的pubspec.yaml中指定的kernel为

dependency_overrides:
  kernel:
    git:
      url: git@github.com:alibaba-flutter/sdk.git
      ref: stable/v1.22.1
      path: pkg/kernel

但实际使用的时候,(alibaba-flutter目录改为了XianyuTech)正确地址是:

git@github.com:XianyuTech/sdk.git

即使你换了正确地址,还是很难下载下来,还是建议使用本地的。

  1. 下载阿里改造过的dart源码

    git clone github.com/XianyuTech/…

这个如果能够直接成功可以直接看第二步,我是不成功的。因为太大,缓存不够

先浅层clone,再fetch

git clone https://github.com/XianyuTech/sdk.git --depth 1
cd sdk
git fetch --unshallow

使用上面方式clone下来的,只有master分支,想要所有分支,再执行如下命令:

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch -all

2.切换dart源码aspectd项目中pubspec.yaml指定的ref上

git checkout stable/v1.22.1

3.在pubspec.yaml中指定为本地依赖

dependency_overrides:
    kernel:
      git:
        url: git@github.com:XianyuTech/sdk.git
        ref: stable/v2.2.3
        path: pkg/kernel
    meta:
      git:
        url: git@github.com:XianyuTech/sdk.git 
        ref: stable/v2.2.3
        path: pkg/meta

改成:

dependency_overrides:  
   kernel:    
     path: /Users/warren/Project/openSource/sdk/pkg/kernel  
   meta:    
     path: /Users/warren/Project/openSource/sdk/pkg/meta

执行flutter run --debug --verbose就可将项目运行起来了。

如果生成aspectD/lib/src/flutter_frontend_server/frontend_server.dart.snapshot文件,则表明成功,再运行demo验证插入的代码生效没有。