flutter新建并上传插件包

937 阅读2分钟

flutter提供了插件包的形式来使代码分模块和共享,可以避免开发者从0开发程序,轻松实现组件化,和iOS的cocopods类似。

创建

一个最小的package包括: (1)一个pubspec.yaml文件:声明了package的名称、版本、作者等的元数据文件。 (2)一个 lib 文件夹:包括包中公开的(public)代码,最少应有一个.dart文件

我用的是andriod studio,可以新建一个pulgin或者package,一个是结合安卓、iOS混编的,一个是纯dart代码 image.png

发布

发布有几种方式:

(1)本地依赖

本地依赖就是把你的插件项目在本地添加到已有的项目中,然后在pubspec.yaml中添加依赖, demo: path:路径名

(2)公有库

发布了以后可以供所有人查询和使用,方便开源,就可以在pub.flutter-io.cn 中查询到
预发布命令:flutter packages pub publish --dry-run
发布命令:flutter packages pub publish
设置了国内镜像的话可以用:flutter packages pub publish --server=pub.dartlang.org
有什么问题按照反馈进行更改,上传成功后就可以在pubspec,yaml中引用,格式如下:

dependencies:
    rxdart: 0.22.6

(3)私有库

可以上传到自己的服务器上,仅供内部使用
发布命令:flutter packages pub publish --server=http://192.168.0.1:8080
192.168.0.1替换为自己的服务器地址,引用的格式如下

flutter_screenutil:
    hosted:
      name: flutter_screenutil
      url: http://192.168.0.1:8080
    version: 4.0.2

问题

本人在上传的时候也遇到一些问题,也在这共享一下:
(1)发布公有和私有的库连不上服务器
这个是因为不管你发布公有还是私有的库,都会通过google的验证,在国内就会有问题,所以要翻墙,发布公有的这一步是不可省略的,必须要验证,但是发布私有的话,这一步可以绕过。
下载项目: github.com/ameryzhu/pu… 然后执行

dart --snapshot=mypub.dart.snapshot bin/pub.dart 

完成之后会在项目根目录下多出来一个 mypub.dart.snapshot 文件

复制之后放入${flutterSDK Path}/bin/cache/dart-sdk/bin/snapshots/ 目录下

用txt编辑器打开${flutterSDK Path}/bin/cache/dart-sdk/bin/pub文件

将倒数第三行的:pub.dart.snapshot 替换为 mypub.dart.snapshot

这样就可以完成私有包的发布而绕过验证

(2)pub did not create .dart_tools/package_config.json file

如果使用了自己的mypub.dart.snapshot,在去清空缓存执行pub get就会报这个错误,把上一个更改的文件改回来就可以了

(3)私有库的头文件找不到

出现这个问题真的要吐槽下android studio,清空缓存没有用,因为我的项目是一开始本地依赖,然后再传到私有服务器,删除本地的,结果项目中一直有缓存,导致找不到头文件,我最后是删除了.idea文件夹,重新导入包就好了