如何在 flutter 包中使用原生 C 库
How to use native C library in flutter package
我有一个用 C 编写的库,我以前通过 JNI 从 java android 应用程序中使用过它。
我现在转而使用 flutter,计划制作一个包装 C 库的 flutter 包。
包的 flutter 项目已经创建,计划使用平台通道(invokeMethod 调用一些简单的 Java 方法来调用库的 JNI。我想我已经实现了大部分.
问题是,我通常会将有关库和 JNI 存在的信息添加到我的 android java 项目的 build.gradle 中。但是,当我在 flutter 包的结构中工作时,我找不到这些文件。如果我改为构建一个标准的 flutter 项目(一个带有 UI 的应用程序),我突然有了 build.gradle 文件。
如何添加这些 gradle 文件,或者我应该将有关 lib/JNI 的信息添加到其他一些特定于 flutter 的文件中?
多层 dart->platformChannel -> java -> jni -> C 库 aproach 听起来像是正确的做法吗?或者有更好的方法吗?
您确定您创建了 Flutter 插件项目(不是包)吗?插件是一种包含Dart/Kotlin(或Java)/Swift(或Obj-C)代码实现Flutter-native层的包,加上一个练习和演示插件使用的示例应用程序。
一个Flutter插件有3个build.gradle个文件:
./android/build.grade
设置插件的最小 SDK、依赖项等的地方
./example/android/build.grade
一般保持不变
./example/android/app/build.gradle
这是您为示例应用设置内容的地方
您对 (1) 所做的任何更改冒泡到示例应用程序(这只是一个使用您的插件的示例应用程序)。同样,当您在其他应用程序中使用该插件时,该应用程序只会从您的插件中获取 (1)。
将您的依赖项添加到 (1)。
我有一个用 C 编写的库,我以前通过 JNI 从 java android 应用程序中使用过它。
我现在转而使用 flutter,计划制作一个包装 C 库的 flutter 包。
包的 flutter 项目已经创建,计划使用平台通道(invokeMethod 调用一些简单的 Java 方法来调用库的 JNI。我想我已经实现了大部分.
问题是,我通常会将有关库和 JNI 存在的信息添加到我的 android java 项目的 build.gradle 中。但是,当我在 flutter 包的结构中工作时,我找不到这些文件。如果我改为构建一个标准的 flutter 项目(一个带有 UI 的应用程序),我突然有了 build.gradle 文件。
如何添加这些 gradle 文件,或者我应该将有关 lib/JNI 的信息添加到其他一些特定于 flutter 的文件中? 多层 dart->platformChannel -> java -> jni -> C 库 aproach 听起来像是正确的做法吗?或者有更好的方法吗?
您确定您创建了 Flutter 插件项目(不是包)吗?插件是一种包含Dart/Kotlin(或Java)/Swift(或Obj-C)代码实现Flutter-native层的包,加上一个练习和演示插件使用的示例应用程序。
一个Flutter插件有3个build.gradle个文件:
./android/build.grade
设置插件的最小 SDK、依赖项等的地方./example/android/build.grade
一般保持不变./example/android/app/build.gradle
这是您为示例应用设置内容的地方
您对 (1) 所做的任何更改冒泡到示例应用程序(这只是一个使用您的插件的示例应用程序)。同样,当您在其他应用程序中使用该插件时,该应用程序只会从您的插件中获取 (1)。
将您的依赖项添加到 (1)。