【问题标题】:how to bundle flutter ffi plugin如何捆绑flutter ffi插件
【发布时间】:2021-03-09 23:36:26
【问题描述】:

我正在为 Flutter 编写 uber h3 插件。我有可用的源代码,但在更精确地创建包时遇到问题我在捆绑 libh3.so 时遇到问题

快速概览:

  1. 有uber h3 c源代码下载。 download_deps.sh
  2. 那么 android/build.gradle 有构建命令
    externalNativeBuild {
        cmake {
            path "../ios/CMakeLists.txt"
        }
    }
  1. 那么 example/lib/main.dart 有一些初始化代码。
  initializeH3((String name) => Platform.isAndroid
      ? DynamicLibrary.open("lib${name}.so")
      : DynamicLibrary.process());

但是当我尝试构建它时,找不到库文件。 -我尝试了不同的位置。 似乎库本机 .so 没有捆绑到应用程序中

但我不知道为什么

根据教程https://flutter.dev/docs/development/platform-integration/c-interop 它应该捆绑在一起。

这里是源代码https://github.com/fmatuszewski/h3

【问题讨论】:

    标签: flutter dart package ffi


    【解决方案1】:

    我已成功运行,pubspec.yaml 的格式不正确且需要:

    flutter:
      plugin:
        platforms:
          android:
            package: com.example.h3
            pluginClass: H3Plugin
          ios:
            pluginClass: H3Plugin
    

    最后添加。

    在执行此操作时,包已正确附加。

    libh3.so 需要添加到android/src/main/jniLibs 才能自然附加但是我也移动了代码:

    final DynamicLibrary h3 = Platform.isAndroid
            ? DynamicLibrary.open("libh3.so")
            : DynamicLibrary.process();
    

    返回 h3.dart 并删除 main.dart 以使其运行。

    我认为这些是让代码运行的主要问题。由于我是插件新手,所以我在找出问题所在时遇到了问题 - 所以坐下来解决所有问题是一个漫长的过程。在这样做的过程中,我最终重新编写了所有代码以了解发生了什么。如果这些点都不起作用,或者您想查看工作代码,请告诉我,我可以将其上传到 Github。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2018-12-10
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多