美文网首页
flutter插件访问不到Android host中的类

flutter插件访问不到Android host中的类

作者: 滚滚大人 | 来源:发表于2020-12-12 19:21 被阅读0次

项目模式:Android 项目+ flutter module
flutter通过插件访问不到host中的类。

E:\dev\FlutterProjects\flutter_hybid_demo\flutter_module\.android\Flutter\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java:16: 错误: 无法访问SceneRestorable
    flutterEngine.getPlugins().add(new com.example.moblink_plugin.MoblinkPlugin());
                              ^
  找不到com.mob.moblink.SceneRestorable的类文件

有些flutter插件很奇葩,只能在Flutter项目中使用。

public final class GeneratedPluginRegistrant {
  public static void registerWith(PluginRegistry registry) {
    if (alreadyRegisteredWith(registry)) {
      return;
    }
    MoblinkPlugin.registerWith(registry.registrarFor("com.example.moblink.MoblinkPlugin"));
  }

  private static boolean alreadyRegisteredWith(PluginRegistry registry) {
    final String key = GeneratedPluginRegistrant.class.getCanonicalName();
    if (registry.hasPlugin(key)) {
      return true;
    }
    registry.registrarFor(key);
    return false;
  }
}

android项目运行执行的不是main.dart,而是app。
android项目中,flutter模块没有依赖android host。
编译时会去对GeneratedPluginRegistrant代码校验,当Plugin类中持有Android host中的类时,造成找不到类的错误。

解决办法:
不使用flutter插件进行flutter通信。
直接使用MethodChannel进行通信,把moblink中的源码直接拷贝出来使用。

以MobLink举例,flutter模块不要导入

moblink: 3.4.1 

直接把moblink插件中的flutter相关代码拷贝到flutter模块使用。

moblink.dart'
moblink_interface.dart
moblink_defines.dart

demo地址
https://github.com/zombiu/flutter_hybid_demo/tree/master

相关文章

网友评论

      本文标题:flutter插件访问不到Android host中的类

      本文链接:https://www.haomeiwen.com/subject/lvdygktx.html