如何在flutter包中使用本机C库

时间:2019-06-26 12:41:09

标签: android c flutter android-ndk java-native-interface

我有一个用C编写的库,以前我是通过JNI在Java android应用程序中使用过的。

我现在打算改用flutter,而计划是制作一个包装C库的flutter包。

该软件包的flutter项目已创建,并且计划使用Platform Channels(invokeMethod来调用一些简单的Java方法来调用该库的JNI。我想我已经实现了其中的大部分功能。

问题是,但是我通常将有关库和JNI存在的信息添加到我的android java项目的build.gradle中。但是,当我在flutter包的结构中工作时,找不到这些文件。如果我改建了一个标准的flutter项目(一个带有UI的应用程序),我会突然拥有build.gradle文件。

如何添加这些gradle文件,或者应该将有关lib / JNI的信息添加到其他特定于flutter的文件中? 多层dart-> platformChannel-> java-> jni-> C库方法听起来是否正确?还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

确定要创建Flutter插件项目(不是软件包)吗?插件是一种封装了Dart / Kotlin(或Java)/ Swift(或Obj-C)代码的程序包,实现了Flutter本机层, plus 一个示例应用程序,用于演示并演示插件的使用

Flutter插件具有3个build.gradle文件:

  1. ./android/build.grade,您可以在其中设置插件的最小SDK,依赖项等
  2. ./example/android/build.grade,通常保持不变
  3. ./example/android/app/build.gradle,您可以在其中设置示例应用程序的内容

您对(1)所做的任何更改都会冒泡到示例应用程序(这只是使用您的插件的示例应用程序)。同样,当您在其他应用中使用该插件时,该应用只会从您的插件中提取(1)。

将依赖项添加到(1)。