flutterselectorFlutter

Flutter插件双端编写pub发布

2021-03-29  本文已影响0人  HarryChen

前面,我们对ios项目基本已经有了大概的认识,现在来开发一个flutter插件,来调用android和ios的原生api。
flutter插件与原生通讯主要是通过channel,底层是通过二进制在传输数据。
类似的跨平台Hbrid和RN等js语言的与原生通讯的JSBridge。

我们现在创建一个插件,已获取手机电量为例子。

create.png create2.png

我们来看一下插件工程的项目结构

struct.png

接着先看下android端的实现

android.png

ios端需要先加载pod

ios1.png
ios2.png ios3.png ios4.png

在这个过程中发现了一个问题,就是swift调用oc的方法时,方法名会部分被省略掉。

ios5.png

最后慢慢了解到,oc的方法名其实很多都是后半部分都是带有第一个参数名形式的,


0.png

就像这个注册插件的方法registerWithRegistrar with后面往往接的是第一个参数,swift可能
是为了增加方法可读性,应该是有根据某种规律来检测判断是否省略。

上面flutter插件的两端就实现了,我们来run一下看看结果

result.png

好的那么插件写好了,当然是可以传到GitHub共享出来。但是就像android可以发布aar一样,flutter的
插件都可以发布在 pub上面。

我们先执行下命令,检测是否符合发布规则,
flutter packages pub publish --dry-run

提示没有填写homepage或repositor(简单理解为就是git源码),并且体积过大。
上传到github,然后clean下项目,删掉build项目。 继续执行检测命令

author.png
这个我么把yaml里面作者这一栏删掉即可
执行最终发布命令
flutter packages pub publish

sudo flutter packages pub publish -v
flutter packages pub publish --server=https://pub.dartlang.org fail.png

失败了 访问不到ping accounts.google
其实我是FQ了的,网页是可以打开,于是我ping了下


ping.png

可以看到 命令行是访问不到google的。需要设置命令行代理。

@harrychen ➜ flutter_plugin_battery git:(master) ✗ export http_proxy=http://127.0.0.1:9999
@harrychen ➜ flutter_plugin_battery git:(master) ✗ export https_proxy=http://127.0.0.1:9999
@harrychen ➜ flutter_plugin_battery git:(master) ✗ set https_proxy=https://127.0.0.1:9999
@harrychen ➜ flutter_plugin_battery git:(master) ✗ set http_proxy=http://127.0.0.1:9999

特别注意,每个代理的端口不一样,不要直接复制,一定要看清自己的代理端口,这个9999
是我自己代理端口!!!!

bashprofile.png
还需要注释国内镜像。上传完了自己再放开 success.png

终于成功了,可以看到pub上已经可以搜到了


pub.png
show.png
上一篇下一篇

猜你喜欢

热点阅读