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

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

相关推荐
Marktowin4 小时前
Mybatis-Plus更新操作时的一个坑
java·后端
赵文宇4 小时前
CNCF Dragonfly 毕业啦!基于P2P的镜像和文件分发系统快速入门,在线体验
后端
程序员爱钓鱼4 小时前
Node.js 编程实战:即时聊天应用 —— WebSocket 实现实时通信
前端·后端·node.js
Libby博仙5 小时前
Spring Boot 条件化注解深度解析
java·spring boot·后端
源代码•宸5 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
小周在成长5 小时前
动态SQL与MyBatis动态SQL最佳实践
后端
瓦尔登湖懒羊羊6 小时前
TCP的自我介绍
后端
小周在成长6 小时前
MyBatis 动态SQL学习
后端
子非鱼9216 小时前
SpringBoot快速上手
java·spring boot·后端