gpt4 book ai didi

android - 使用 Android NDK 在 C 或 C++ 中创建 react-native Native 模块?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:59 27 4
gpt4 key购买 nike

我必须创建一个 Java native 接口(interface) (JNI) 才能从用于 Android 的 react-native native 模块访问 C 或 C++ 代码吗?

我的目标是在支持两者的 react-native Native Module 中重用常见的 C 和 C++ 算法(非 UI) 安卓和 iOS。从 Objective C *.m 模块调用 C 或从 Objective C++ *.mm 模块调用 C++ 很简单。但是,Android 的 react native Native Module 在 java 中实现了 Native Module 代码。

https://facebook.github.io/react-native/docs/native-modules-android.html#content

Android NDK 允许您使用 C 或 C++ 编写 Android 代码。 Android NDK 适用于 C++ frameworks such as Qt 5.6 .我不明白如何在避免 java JNI 的同时跨 javascript 到 react-native Native Module?

提前感谢任何提示或指导,

最佳答案

我最近不得不在一个 React Native 项目上执行此操作,但我无法在不使用 JNI 的情况下找到解决方法。为此,您基本上必须为 JS 到 Java 桥编写代码,然后为 Java 到 C(通过 JNI)桥编写更多代码,然后返回到 JS。

如果您只传递原语那么这很容易,因为 JNI 可以处理类型转换,例如在 C 中将 Java int 转换为 jint(这是一个 int typedef),但是如果您要传递复杂的数据类型那么您必须通过告诉 JNI 您的类具有哪些字段以及这些字段的类型来编写代码以从 JNI jobject 中获取 C 结构。我发现编写实用程序函数来执行此操作更容易。这是很多初始设置和无聊的代码,但是一旦您开始使用并习惯了它,它就不那么困难了。 JNI 规范非常适合引用,只是没有告诉您如何您应该使用它。

我有一个 github project它使用 JNI 传递一些示例类。这blog article解释了 JNI 的所有设置步骤,如果您已经对此感到满意,它会在“真实世界 JNI”部分中详细介绍。如果您对此有任何疑问,请告诉我!

关于android - 使用 Android NDK 在 C 或 C++ 中创建 react-native Native 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36574454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com