【问题标题】:How to use native C library in flutter package如何在 Flutter 包中使用原生 C 库
【发布时间】:2019-06-26 12:41:09
【问题描述】:

我有一个用 C 编写的库,我以前通过 JNI 从 java android 应用程序中使用过它。

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

已经创建了包的flutter项目,计划使用平台通道(invokeMethod来调用一些简单的Java方法来调用库的JNI。我想我已经实现了大部分。

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

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

【问题讨论】:

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


    【解决方案1】:

    你确定你创建了一个 Flutter 插件项目(不是一个包)吗?插件是一种包含实现 Flutter-native 层的 Dart/Kotlin(或 Java)/Swift(或 Obj-C)代码的包,加上一个示例应用程序,用于练习和演示插件的使用.

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

    1. ./android/build.grade 您设置插件的最小 SDK、依赖项等的位置
    2. ./example/android/build.grade 通常保持不变
    3. ./example/android/app/build.gradle 这是您为示例应用设置内容的地方

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

    将您的依赖项添加到 (1)。

    【讨论】:

    • 你是对的。该项目是作为包而不是插件创建的。有什么办法可以改变这个(包 - >插件)还是我必须重做我已经对项目所做的更改?
    • 最好从一个新项目开始,把实现复制过来。
    猜你喜欢
    • 2018-12-19
    • 2023-03-24
    • 2018-10-05
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-09-15
    相关资源
    最近更新 更多