[Flutter] 发布自己的插件 package
我们自己做了插件包,当然也想发布到pub.dartlang.org上去。怎么发布呢?先看看官方的说明(https://flutter.io/developing-packages/)。
Publishing packages
Once you have implemented a package, you can publish it on Pub, so that other developers can easily use it.
Prior to publishing, make sure to review the
pubspec.yaml
,README.md
, andCHANGELOG.md
files to make sure their content is complete and correct.Next, run the dry-run command to see if everything passes analysis:
$ flutter packages pub publish --dry-run
Finally, run the actual publish command:
$ flutter packages pub publish
For details on publishing, see the Pub publishing docs.
意思就是说,做好插件后,在终端中先执行 $ flutter packages pub publish --dry-run
来检查看是否没有问题了,再执行下一句 $ flutter packages pub publish 来上传。
在这两步中,如果没有问题会在终端中会显示 ”Package has 0 warnings.“。
在这一步如果出错,可以检查一下 pubspec.yaml 中最后的 environment 字段是否设置。一般会是这样:
environment:
sdk: ">=2.0.0-dev.28.0 <3.0.0"
flutter: ">=0.1.4 <2.0.0"
如果配置了还是不行,按照提示修改。
好了,在一切都没有问题时,我们开始上传。输入命令 $ flutter packages pub publish 回车,会先检测项目结构是否合法,然后会出现这样的界面:
输入 "y" 回车。
第一次上传,会要求登录谷歌账号。这个时候终端会出现一个url地址,类似这样:
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&response_type=code&client_id=818368855108-8grd2eg9tj9f38os6f1urbcvsq399u8n.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A62338&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email
将地址复制出来,在浏览器URL中输入打开这个地址,允许登录谷歌账号就可以了。
但是在这里,由于国内限制了谷歌的访问,所以一般会打不开,怎么办呢?这个时候我们只能借助SVN工具了。我使用的是”无界“。
打开无界,设置成如下:
配置 Internet 属性中的局域网设置
在代理设置界面中,输入无界的代理地址和端口。如上图所示。
这个时候再刷新页面,应该可以打开我们要登录谷歌的网址了。
登录谷歌账号后出来如果所示的界在,这时候点击相关账号确认就行了。
确认登录后,浏览器会回调给 Android Studio ,这时候 Android Studio 会开始连接谷歌并上传我们的插件包。
但是这里也要注意,可能也会因为谷歌被屏蔽而失败。(出现下图所示的提示时,一般就是这个问题了)
这个时候我们需要设置终端的HTTP代理(在Android Studio中系统设置的配置的并没有效果)。在终端中执行如下命令配置代理:
set http_proxy=http://127.0.0.1:9666 set https_proxy=https://127.0.0.1:9666
配置好后重新执行发布命令,重新执行上面认证登录的流程即可。(下图为上传成功的提示)
flutter packages pub publish --server=https://pub.dartlang.org