方案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 的时候报错了
无效的内核二进制文件,初步猜测本机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
网友评论