flutter组件 私有化使用的方案探究

方案1 搭建pub私有服务,依赖库发布到pub私服上

搭建pub私服

使用 https://github.com/dart-archive/pub_server dart官方的开源项目

参考:https://blog.csdn.net/ameryzhu/article/details/101688994

发布插件到pub私服

  • 创建一个 dart package项目
    完成项目功能开发;配置项目的 发布地址,即pub私服的上传路径


    image.png
  • 项目发布前 检测(并不上传项目)
flutter pub publish --dry-run
image.png
  • 检测通过,开始发布
 flutter packages pub publish --server=http://127.0.0.1:8081
image.png

虽然是 pub私服,依然要求 登录验证google账号,才能够继续发布,坑。
这是因为 发布项目到 pub仓库的命令是 "flutter pub publish" 是dart sdk提供的 工具,而且项目插件的验证 ,身份的识别也写到了pub publish命令当中;

解决思路(不考虑技术实现)要么根据提示 进行googel的oauth2授权;要么 修改“pub publish”命令的 验证部分的代码

  • 尝试修改 “pub publish”命令的 验证部分的代码
    首先,这是flutter sdk中的内置dart-sdk的 pub命令的 脚本
    image.png

    实际 执行的是 dart-sdk/bin/snapshots/pub.dart.snapshot 这个
    snapshot文件
    什么是snapshot文件?
    是dart 代码编译后的字节码序列文件,dartvm能够高效的执行 代码http://www.cndartlang.com/984.html

参考:https://blog.csdn.net/ameryzhu/article/details/101688994
https://www.jianshu.com/p/9ee523958b23

这两篇技术文章,下载https://github.com/dart-lang/pub
编译pub的dart代码 生成的 mypub.dart.snapshot文件 ,并修改pub文件的路径指向为

# Run the pub snapshot.
DART="$BIN_DIR/dart"
if array_contains "--no-preview-dart-2" "${VM_OPTIONS[@]}"; then
  echo "Pub no longer supports Dart 1"
  exit -1
else
  SNAPSHOT="$BIN_DIR/snapshots/mypub.dart.snapshot"
  exec "$DART" "${VM_OPTIONS[@]}" "$SNAPSHOT" "$@"
fi

在执行 flutter pub publish 的时候报错了

image.png

无效的内核二进制文件,初步猜测本机flutter的dart版本和从https://github.com/dart-lang/pub 下载的pub代码使用的dart版本不一致
暂时记录..

方案2: 依赖库 存放到 私有git仓库

  • 使用本地插件:
插件名称:
 path: ‘插件路径’
  • 使用git仓库插件

git仓库插件

 插件名称:
    git:
      url: git://github.com/jlouage/xx.git
      ref: master

你可能感兴趣的:(flutter组件 私有化使用的方案探究)