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 <[email protected]>
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

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

相关推荐
蜗牛沐雨1 小时前
Rust 中的 `PartialEq` 和 `Eq`:深入解析与应用
开发语言·后端·rust
Python私教1 小时前
Rust快速入门:从零到实战指南
开发语言·后端·rust
秋野酱2 小时前
基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)
java·spring boot·后端
小明.杨3 小时前
Django 中时区的理解
后端·python·django
有梦想的攻城狮3 小时前
spring中的@Async注解详解
java·后端·spring·异步·async注解
qq_12498707533 小时前
原生小程序+springboot+vue医院医患纠纷管理系统的设计与开发(程序+论文+讲解+安装+售后)
java·数据库·spring boot·后端·小程序·毕业设计
lybugproducer4 小时前
浅谈 Redis 数据类型
java·数据库·redis·后端·链表·缓存
焚 城4 小时前
.NET8关于ORM的一次思考
后端·.net
撸猫7916 小时前
HttpSession 的运行原理
前端·后端·cookie·httpsession
嘵奇6 小时前
Spring Boot中HTTP连接池的配置与优化实践
spring boot·后端·http