发布自己的插件 Flutter package
什么是 pub
偶尔会经常听人说 发布包到 pub 了,那什么是 pub 呢
官方描述: Pub is the package manager for Dart. / dart 语言的包管理器
官网
pub 的官方 url: https://pub.dartlang.org/
这个域名有多个小伙伴同时 ping 过, 对应 ip 不相同,所以可知这个网站是有负载均衡的, 但是坑的地方来了, 部分在墙外,所以这就是这个网站偶尔国内访问不通畅的原因
然后有几个国内镜像站点,可以查看官网介绍Using Flutter in China
设置访问镜像
在环境变量中配置,这个根据系统不同设置方法不同
mac 的话 可以使用 export 命令临时添加
也可以在vi ~/.bash_profile,在这个文件中添加
其他系统的设置方式请自行查找
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
这样在国内就很快了
如果你需要发布插件的话,到这里就结束了
发布
有的时候我们自己写了开源库,想要发布到 pub 上怎么办呢
dart/flutter 对于插件没有审核的概念,而且发布很简单,你可以任意发布插件到 pub 上,只要不重复就可以了
必备前提
- 一份代码
- 一份命令行翻墙工具
- 一个 google 账号
代码是必须的,不然没意义
命令行翻墙工具是因为国内镜像发布不了,必须要连接到 pub 的官方源
google 账号是确定权限用的,不能你说你是主人你就是主人了吧, 你要绑定库和你的作者身份,不然别人随手写一个覆盖你的插件岂不是乱套了
终端翻墙
这里因为涉及到连接 google,所以你必须保证你的终端翻墙了
这里因为涉及到连接 google,所以你必须保证你的终端翻墙了
以 mac 为例 你输入curl google.com,如果有成功的回文(一个 html 格式的文本信息)说明成功了,如果没有就说明你的终端还在墙内,你需要自行保证 curl 能连接成功
提示: SS(小飞机) 的终端 http 协议翻墙可以简单在终端输入 export http_proxy=http://127.0.0.1:1081;export https_proxy=http://127.0.0.1:1081 或者查看https://blog.iw3c.com/archive/1156
其他的工具需要自行查看对应的解决方案
开始发布
-
还记得之前设置的环境变量访问中国镜像吗,这一步需要去掉这些环境变量,但是我们今后还用国内的呢,修改文件很麻烦
没事,我们可以临时在当前终端干掉这两个环境变量
unset FLUTTER_STORAGE_BASE_URL;unset PUB_HOSTED_URL
这样不会影响别的窗口
-
在要上传的插件文件夹下输入
flutter packages pub publish --dry-run --server=https://pub.dartlang.org
我们能看到第一行信息告诉我们上传的地址是
flutter-io.cn
这样一定会失败
修改一下, 这里使用
flutter packages pub publish --dry-run --server=https://pub.dartlang.org
这样就会看到上传到
pub.dartlang.org
上,这样就可以了
这里会告诉你,我们需要协议,COPYING,LICENSE or UNLINCESE,必须至少有一个在根目录下
pubspec 中需要作者信息,主页信息,版本信息
修改一下
然后看到,没有错误
去掉--dry-run
后再试一下
flutter packages pub publish --server=https://pub.dartlang.org
这时候应该会提示一个 account 的 url,这时候你需要将这个 url 复制到浏览器中,然后根据提示登录 google 帐号,且完成授权信息,这样他会如下图所示,提示你准备好上传了吗
输入 y 回车就可以了
如果你没有出现 google 帐号授权那个 url 只有两种情况,一个是你以前授权过,二是你连接失败了
本文来自:https://www.kikt.top/posts/flutter/package/publish-fail/