以开发腾讯云基础版人脸核身Flutter插件为例,总结Flutter Plugin开发和发布流程。
项目地址:https://github.com/Ucoon/wb_cloud_face
1. 创建 package
方式一:通过
Android Studio
直接创建Flutter Project
(选择Plugin类型)可选择使用的语言和插件支持的平台
方式二:通过命令行创建Flutter Plugin Project(使用
--template=plugin
)1
flutter create --org tech.ucoon --template=plugin wb_cloud_face
可以使用-i为iOS指定开发语言,使用-a为Android指定开发语言,如:
1
flutter create --org tech.ucoon --template=plugin -i swift -a kotlin wb_cloud_face
2. 实现包package
在lib下的dart文件中定义接口:
openCloudFaceService
1
2
3
4
5
6
7static Future<WbCloudFaceVerifyResult> openCloudFaceService({
required WbCloudFaceParams params,
}) async {
final res = await _channel.invokeMethod(
'openCloudFaceService', params.toJson());
return WbCloudFaceVerifyResult.fromJson(json.decode(res));
}添加Android平台实现的代码(android目录下)
注意事项:
import io.flutter.embedding.engine.plugins.FlutterPlugin;
导入plugin相关代码报红1
You should open the project in android studio from the example/android location.
插件中引入第三方本地aar文件时,需在插件
/android/build.gradle
中添加flatDir
1
2
3
4
5
6
7
8rootProject.allprojects {
repositories {
...
flatDir {
dirs project(':wb_cloud_face').file('libs')
}
}
}
添加iOS平台实现的代码(iOS目录下)
注意事项:
在podspec文件(
podspec是一个描述pod库版本文件
)添加说明:name
,version
、summary
、homepage
、author
引用第三方静态库Framework:在iOS目录下新建Framework文件夹,把需要的三方库拷贝到Framework文件夹下,并在podspec文件中配置如下三个字段
1
2
3s.vendored_frameworks //第三方静态库的.framework文件路径
s.vendored_libraries//第三方静态库的.a文件路径
s.resource //第三方静态库的.bundle文件路径
至此plugin开发完成
3. 发布Plugin
- 在发布之前,检查
pubspec.yaml
(检查description
、version
、homepage
字段)、README.md
(使用教程)以及CHANGELOG.md
(版本记录)文件,以确保其内容的完整性和正确性。 - 然后, 运行 dry-run 命令以查看是否都准备OK了:
flutter packages pub publish --dry-run
- 最后, 运行发布命令:
flutter packages pub publish
注意事项:
发布插件压缩之后的包必须小于100M
1
Your package must be smaller than 100 MB after gzip compression. If it’s too large, consider splitting it into multiple packages, using a .pubignore file to remove unnecessary content, or cutting down on the number of included resources or examples.
针对这种情况,可考虑搭建Flutter pub私有仓库,或者以github方式引用插件
参考资料: