什么是 pub

偶尔会经常听人说 发布包到 pub 了,那什么是 pub 呢

官方描述: Pub is the package manager for Dart. / dart 语言的包管理器

官网

pub 的官方 url: https://pub.dartlang.org/

这个域名有多个小伙伴同时 ping 过, 对应 ip 不相同,所以可知这个网站是有负载均衡的, 但是坑的地方来了, 部分在墙外,所以这就是这个网站偶尔国内访问不通畅的原因

然后有几个国内镜像站点,可以查看官网介绍Using Flutter in China

flutter-io 上海交大

设置访问镜像

在环境变量中配置,这个根据系统不同设置方法不同

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 上,只要不重复就可以了

必备前提

  1. 一份代码
  2. 一份命令行翻墙工具
  3. 一个 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

其他的工具需要自行查看对应的解决方案

开始发布

  1. 还记得之前设置的环境变量访问中国镜像吗,这一步需要去掉这些环境变量,但是我们今后还用国内的呢,修改文件很麻烦

    没事,我们可以临时在当前终端干掉这两个环境变量

    unset FLUTTER_STORAGE_BASE_URL;unset PUB_HOSTED_URL
    

    这样不会影响别的窗口

  2. 在要上传的插件文件夹下输入

    flutter packages pub publish --dry-run --server=https://pub.dartlang.org
    

这个是尝试上传,这里会提示你一些信息图1

我们能看到第一行信息告诉我们上传的地址是

flutter-io.cn

这样一定会失败

修改一下, 这里使用

flutter packages pub publish --dry-run --server=https://pub.dartlang.org

图2

这样就会看到上传到

pub.dartlang.org

上,这样就可以了

这里会告诉你,我们需要协议,COPYING,LICENSE or UNLINCESE,必须至少有一个在根目录下

pubspec 中需要作者信息,主页信息,版本信息

修改一下

图3

然后看到,没有错误

图4

去掉--dry-run后再试一下

flutter packages pub publish --server=https://pub.dartlang.org

这时候应该会提示一个 account 的 url,这时候你需要将这个 url 复制到浏览器中,然后根据提示登录 google 帐号,且完成授权信息,这样他会如下图所示,提示你准备好上传了吗

输入 y 回车就可以了

成功的图在下面图5

如果你没有出现 google 帐号授权那个 url 只有两种情况,一个是你以前授权过,二是你连接失败了

本文来自:https://www.kikt.top/posts/flutter/package/publish-fail/