我必须创建一个java本地接口(JNI),以便从Android的原生本地模块访问C++代码或C++代码吗?

我的目标是在支持both Android和iOS的Ac生生Native Module中重用普通C和C++算法(非UI).从目标C*调用C很简单.M模块,或者C++从目标C++中.毫米模块.然而,react native Native Module for Android在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本机模块时,我如何react ?

提前感谢您提供的任何提示或指导,

推荐答案

我最近不得不在一个React原生项目上这样做,如果不使用JNI,我就找不到解决这个问题的方法.要做到这一点,基本上必须为JS到Java桥编写代码,然后为Java到C(通过JNI)桥编写更多代码,然后返回到JS.

如果只传递原语,那么JNI就可以很容易地处理类型转换,例如C中的Java int到jint(这是一个int typedef),但是如果要传递复杂的数据类型,那么必须编写代码,通过告诉JNI类有哪些字段以及这些字段是什么类型来获得JNI jobject的C struct .我发现编写实用函数更容易做到这一点.这需要很多初始设置和枯燥的代码,但一旦你开始使用并习惯了,就没那么难了.JNI规范非常适合参考,它只是没有告诉你应该使用它.

我有一个github project,它使用JNI传递一些示例类.这篇blog article篇文章解释了JNI的所有设置步骤,如果你已经习惯了,那么在"真实世界JNI"一节中会详细介绍.如果你对此有任何疑问,请告诉我!

React-native相关问答推荐

使用NextJS映射从数组中提取用户角色

如何在 navigation.js 文件中的 react-navigation 中当前路由名称?

错误发生意外错误:https://registry.yarnpkg.com/react-native-template-react-native-template-typescript:未找到

如何在 react-native 中设置 Onpress On Textinput

给定 APK 文件,我如何检测应用程序是否使用 React Native?

如何在react-native 中处理不同的屏幕尺寸?

打包程序无法启动

React-Native Packager 失败:重复的模块名称

如何将参数传递给graphql片段?

如何判断 goBack() 函数在react-navigation 中是否可行?

React native base headers for ios not found

React Native:fetch request failed with error - TypeError: Network request failed(…)

如何从 React Native-App 中的 res/drawable-folder 加载图像?

如何将 Tensorflow 与 react-native 一起使用?

iOS 模拟器如何确认alert信息

react-native fetch() cookie 持久化

如何使用特定目标运行 react-native run-ios

是否需要使用 StyleSheet.create?

Native Script 与 react native 和 ionic 框架的区别

如何在 React Native 中将图像放置在其他图像之上?