flutter - 如何捆绑flutter ffi插件
问题描述
我正在为颤振编写 uber h3 插件。我有可用的源代码,但更精确地创建包时遇到问题 我在捆绑 libh3.so 时遇到问题
快速概览:
- 有下载的uber h3 c源代码。
download_deps.sh
- 然后 android/build.gradle 有构建命令
externalNativeBuild {
cmake {
path "../ios/CMakeLists.txt"
}
}
- 然后 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 它应该被捆绑。
解决方案
我已经设法让它运行,它的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。
推荐阅读
- linux - 关于 Linux 终端命令“/sys/class/drm/*/status”的意外结果
- excel - 在 A1 到 A70 范围内,如果单元格为空/空白,则删除该整行并将下面的其他行向上移动
- tensorflow - 如何在 for 循环中创建张量列表并在 tensorflow2 中使用 tf.stack
- email - 用于从 Google 电子表格导入多列数据以自动触发邮件的宏
- python - 添加没有参数的层后无法加载优化器权重
- zsh - 为普通/超级用户自定义 zsh 提示?
- sed - 按新行拆分 du 命令的结果
- javascript - 有没有办法使用 AJV 从外部 URL 加载架构
- reactjs - React Hooks 上的简单 useState 触发了一个奇怪的错误 undefined is not iterable (cannot read property Symbol(Symbol.iterator))
- javascript - 无法访问对象内部的属性