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

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

相关推荐
星辰徐哥6 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥6 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约6 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee6 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐6 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs6 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐6 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司6 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
码农阿豪6 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
追逐时光者6 小时前
一个基于 .NET 与 Avalonia 构建、面向 TrinityCore 的开源 WoW 数据库编辑器
后端·.net