前言
最近我在业余时间开发了一个Flutter插件用于Android应用内的版本更新:flutter_xupdate,发现在开发的过程中没遇到什么坑,但就是在发布到flutter插件平台时碰到了很多问题,这里我记录一下,给后来的人一点建议.
Flutter Plugin插件开发
1.创建Flutter Plugin插件项目
这里推荐使用Android Studio创建项目,根据提示一步一步来就行了,截图如下:
![](https://oss.jqhtml.com/wp-content/uploads/2020/6/mQF7Zb.png)
生成的项目目录主要包含以下内容:
- “android”目录是插件API在Android平台的实现。
- “ios”目录是插件API在iOS平台的实现。
- “example”目录是使用插件的一个示例项目。
- “lib”目录的文件,主要是创建“MethodChannel”,然后接收并处理来自原生平台发来的消息
2.实现插件功能
这里我主要介绍一下Android端的API实现.
坑点一: Flutter插件加载存在两个版本
由于Flutter自动依赖插件的方式存在两个版本(Registrar和FlutterPluginBinding), 因此我们在实现Android的插件的时候,为了能提高兼容性,最好把这两种都实现一遍.所以,Android的插件需要实现FlutterPlugin
, ActivityAware
, MethodCallHandler
这三个接口, 以我的flutter_xupdate插件为例,实现如下:
public class FlutterXUpdatePlugin implements FlutterPlugin, ActivityAware, MethodCallHandler {
private static final String PLUGIN_NAME = "com.xuexiang/flutter_xupdate";
private MethodChannel mMethodChannel;
private Application mApplication;
private WeakReference<Activity> mActivity;
//此处是新的插件加载注册方式
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
mMethodChannel = new MethodChannel(flutterPluginBinding.getBi