问题描述
我正在为 Flutter 编写 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());
但是当我尝试构建它时找不到库文件。 -我尝试了不同的位置。 似乎库 native .so 没有捆绑到应用程序中
但我不知道为什么
根据教程https://flutter.dev/docs/development/platform-integration/c-interop 应该是捆绑的。
这是源代码https://github.com/fmatuszewski/h3
解决方法
我设法让它运行,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。