【发布时间】:2021-09-07 13:46:23
【问题描述】:
我正在编写一个示例 android 应用程序来演示我们的(大学研究)C/C++ 库的使用。
我知道,使用 jni,我们可以从 java 调用 C 函数。 但是,我还没有找到关于如何在 Android Studio Artic Fox 中执行此操作的分步说明。
我已经看到需要编写与 jni 兼容的 C 包装函数,但还没有找到如何做到这一点(正确形成函数签名)或将它们放在哪里。
此外,我需要在项目设置中进行哪些更改才能正确构建项目(使用 gradle)?
请注意,我必须直接使用预构建的 .so 文件和为库定义一组公共 C 函数的公共头文件。
有很多示例提供了部分过时的信息,但仍然没有全面的信息 - 或者我错过了什么?
【问题讨论】:
-
答案很大程度上取决于所说的库的作用。它是一个图像处理库吗?联网?声音的?请修改您的问题,了解您希望如何展示该功能。
-
不,它是一个文本到语音库,所以没有与 UI 交互。
-
好的,所以从一个简单地在循环中调用
native static函数的线程开始。为调用您的库的上述native函数编写一些JNI 代码。 -
这就是这个问题的重点:如何编写 jni 代码 - 函数签名,正确调整 gradle 构建,将 jni 代码文件放在哪里(我认为是 .c 和 .h),等
-
Android 开发者网站上有大量关于如何入门的文档。而且我不知道您为什么需要了解 gradle build 的详细信息,只需创建一个新的 JNI 项目并从那里开始工作?我可以执行 File -> New 并选择 Native C++,这是新的“完全原生”活动。或者,我可以创建一个常规的 Android 应用程序,右键单击该应用程序并说“将 C++ 添加到模块”为我生成必要的 CMake 内容。
标签: android-ndk java-native-interface