最近在研究将自己写的插件上传到Pub Package, 经过不懈的努力,终于上岸了
注意:全程建议在终端操作,不要关闭终端页面,不然要重新 配置命令行科学上网
一、项目配置
1.新建Plugin项目(不懂得可以自行百度)
2.配置 pubspec.yaml
注意:这里只是示例,需要根据个人项目进行更改
如果有author这个可以删除,看别人说好像会影响发布
3.添加 README.md、CHANGELOG.md
README.md 主要用于向别人介绍api用法
CHANGELOG.md 主要用于记录每个版本的变更
项目里没有的,直接新建即可
4.添加 LICENSE
LICENSE,在Github新建项目的时候可以选择
一般选择MIT即可,如需了解,请点击 --> LICENSE 介绍
如果你说:呀,那我新建的时候没有选怎么办呢,那我现在没有LICENSE啊
不用急,看我的
选择后会进入这个页面
再次点击Chose a license template
,就会进入这个页面
最后点击Review and submit
就ok了
5.对外公开类
由于Flutter Plugin的机制,引用插件时默认只能引用到lib下与项目同名的那个dart文件,如果想调用其他类,需要手动导包,对使用者来说很不友好。所以,就需要对外公开。
方法也很简单,在lib下与项目同名的dart文件顶部添加(注意,不是
example下的lib)
//这里声明一下library, flutter_native_hlper就是项目名称
library flutter_native_hlper;
//下面这两个,就是要对外公开的类(根据自己项目的需要来公开)
export 'package:flutter_native_helper/flutter_native_constant.dart';
export 'package:flutter_native_helper/model/system_ringtone_model.dart';
这样,外部使用时就无需再手动导包了。
这时候,我们项目基本就已经配置完成了。
二、发布准备
前面的都比较简单,到这里每一步一定要认真
看
1.科学上网 (这点很重要,具体流程,自行百度)
注意:使用科学上网的插件时一定要选择全局科学上网
最初,单纯的我以为全局科学上网之后就ok了,但是在 授权步骤 时我栽了跟头,会一直卡在
Waiting for your authorization...
Authorization recived, processing
解决办法:打开你的科学上网工具,找到
打开终端,依次输入 (这样做只能保证在当前终端有效,关闭这个窗口就会失效,如需永久保留,可配置在 bash_profile 或 zshrc 中)
//注意,要把 [127.0.0.1]、[10887] 替换成你本机的值
export http_proxy=http://127.0.0.1:10887
export https_proxy=http://127.0.0.1:10887
完成后,可以在终端输入 export -p
来校验是否添加成功,如果有我们刚才添加的值即为成功。
成功后,我们继续在终端输入curl www.google.com
, 查看命令行科学上网是否成功开启,如果返回一大串字符则说明配置成功,如果没有,请检查你的科学上网配置 (是否开启了全局科学上网、在终端 export 的值是否与本机的值对应)
3.删除之前配置的Flutter国内镜像
因为这两个变量会影响待会儿的验证,所以查看你的环境变量,看看是不是包含这两个
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
如果有,删掉或者注释它们,注释就是在前面加一个#
(最好先删掉)
删除的方法就是在 .bash_profile 或 .zshrc 里面查看是否存在(是 bash_profile 还是 zshrc 取决于你的mac使用的什么),具体查看方法请自行百度。
注意操作完之后,记得要source ~/.bash_profile
或 source ~/.zshrc
使其生效,否则只有重启后才会生效
4.注册一个谷歌账号(ps: 如果已经有的,可以直接看第三步👇)
由于发布到pub会有一个认证过程,这个认证必须要登录一个谷歌账号。
我在刚注册的时候,直接在电脑端网页注册的,结果在输入手机号接受验证码使直接提示我 当前手机号暂不可用
,这可能是某些方面的限制.
然后我找到了一个办法:在移动端(我用的Android),要科学上网
,如果有Chrome浏览器将其语言设置为英文
,下载一个QQ邮箱APP,在进入的时候选择Gmail
登陆,会进入谷歌的注册页面,这个时候再次注册、输入手机号就可以了 (如果你最近在电脑端用同一个
邮箱/手机号注册失败过,可能会导致现在也失败,解决办法就是换一个邮箱/手机号),我就是在电脑端失败了,在QQ邮箱那里注册的时候换了一个邮箱就可以了。
三、开始发布
如果刚才的流程都顺利通过,那么接下来的步骤你应该会很轻松
1.进入项目根目录
在终端,cd
到要发布项目的根目录
2.测试-命令行科学上网
防止你待会儿失败,在这里我们再次进行一次测试,还是输入curl www.google.com
查看能否返回一大串信息,成功-继续往下走,失败-回头仔细看(你是否在过程中关闭了终端,或检查科学上网配置)
3.将国内镜像转到官方源
flutter packages get
4.测试发布
这一步主要是看有没有什么问题(我也不太懂)
如果是第一次发布,这一步或下一步会让你去验证,验证很简单,会给你一个网址,你只需要复制到浏览器打开,登录刚才的谷歌账号即可。
flutter packages pub publish --dry-run
5.发布
这一步控制台可能会出现一个是否同意的步骤,输入 y
即可
flutter packages pub publish --server=https://pub.dartlang.org
如果在授权成功后,进入到了 uploading
状态,恭喜你授权成功!随后如果出现什么问题,根据它的提示来就可以了,我失败了一次是因为 pubspec.yaml
中的description
太长,按照要求更改即可。
如果你看到了这个界面,恭喜你,上岸了!!!
感谢各位大佬:flutter-发布一个package到pub.dev 超详细教程
、Plugin发布遇坑,google授权失败