Flutter组件/插件开发及发布流程

Flutter组件/插件开发及发布

一、组件和插件的区别

组件-package: 只包含flutter功能的第三方包/子工程,纯dart开发。

插件-plugin: 用来与原生进行交互,需要开发dart端代码和iOS/Android原生代码。

二、组件开发流程

1.创建package工程

使用AndroidStudio中的Flutter Package工程模板或者命令行:

dart 复制代码
flutter create -t package test_package

test_package即package的名称。

2.开发

生成的工程里面大致有.idea(工程环境信息),lib(package源代码),test(单元测试代码)等目录结构。我们在lib目录下开发功能。

3.测试

package工程并没有自动创建样例工程,所以可以在工程目录新建example工程用来自测。

dart 复制代码
flutter create example

然后在example中使用path导入来看功能是否正确实现。

yaml 复制代码
test_package:
  path: ../test_package

4.发布

功能测试正常之后就可以准备发布组件了。

git发布

如果不想把组件发布到官方Pub,可以将代码上传到git,然后通过指定git地址来使用。

yaml 复制代码
test_package:
    git:
      url: 'git url'
      ref: 'tag'
发布到官方Pub

发布到Pub,我们需要在yaml文件修改相关的信息,添加version、homepage等。

yaml 复制代码
name: test_package
description: A new Flutter package project.
version: 0.0.1
author: test <test@gmail.com>
homepage: http://gitlab.com/test/test_package

正式发布前先使用命令校验:

dart 复制代码
pub publish --dry-run

配置信息正常的话就不会有提示,否则的话按照提示修改即可。

比较常见的问题有:

  • author后必须带个email地址
  • CHANGELOG.md中必须包含yaml中的版本号
  • 包体积必须小于100MB

由于发布到pub需要科学上网,所以需要配置好代理设置。

网络处理正常后,执行以下指令:

dart 复制代码
flutter packages pub publish --server=https://pub.dartlang.org

第一次发布需要copy地址到google浏览器进行认证。确认成功之后,就可以发布到pub了。

发布成功之后就可以在我们的flutter工程使用pubspec.yaml导入我们的插件了。

yaml 复制代码
test_package: ^0.0.1
发布到私有Pub

首先,需要有一个私有Pub服务。

然后,在组件的pubspec.yaml文件中配置私有pub地址。

yaml 复制代码
publish_to: http://192.168.44.222:8090

最后执行命令:

dart 复制代码
flutter packages pub publish

三、插件开发流程

1.创建插件工程

dart 复制代码
flutter create -i objc -t plugin test_plugin

-i objc参数是指iOS代码使用ObjC语言,如果选择使用Swift,则无需添加此参数。

2.开发

插件的功能需要在lib/ios/android三个目录下开发。插件主要通过MethodChannel在Dart代码和原生代码之间通信。

3.测试

插件的默认工程模板中包含了example,可以直接在该目录中编写测试代码。

iOS工程需要先在example/ios目录下执行pod install安装依赖,然后再使用Xcode打开工程并运行。对于iOS开发者来说,可以使用appuploader这样的工具来简化证书管理和打包上传流程。

4.发布

插件的发布方法和组件相同,具体请参照组件。

iOS开发小贴士

在开发Flutter插件时,iOS端的打包和发布可能会遇到证书配置等问题。这时可以考虑使用appuploader这样的iOS开发助手工具,它可以帮助开发者:

  • 自动管理证书和描述文件
  • 简化打包流程
  • 快速上传应用到App Store Connect

这些工具可以显著提高开发效率,特别是在需要频繁打包测试的情况下。

相关推荐
Victor3562 分钟前
Redis(6)Redis的单线程模型是如何工作的?
后端
Victor3563 分钟前
Redis(7)Redis如何实现高效的内存管理?
后端
David爱编程1 小时前
进程 vs 线程到底差在哪?一文吃透操作系统视角与 Java 视角的关键差异
后端
smileNicky11 小时前
SpringBoot系列之从繁琐配置到一键启动之旅
java·spring boot·后端
David爱编程12 小时前
为什么必须学并发编程?一文带你看懂从单线程到多线程的演进史
java·后端
long31612 小时前
java 策略模式 demo
java·开发语言·后端·spring·设计模式
rannn_11113 小时前
【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式
css·后端·学习·html·javaweb
柏油14 小时前
Spring @Cacheable 解读
redis·后端·spring
柏油14 小时前
Spring @TransactionalEventListener 解读
spring boot·后端·spring
两码事16 小时前
告别繁琐的飞书表格API调用,让飞书表格操作像操作Java对象一样简单!
java·后端