繁体   English   中英

使用Android NDK在C或C ++中创建反应原生的本机模块?

[英]Create react-native Native Module in C or C++ using Android NDK?

我是否必须创建Java本机接口(JNI)才能从Android的本机原生模块访问C或C ++代码?

我的目标是在同时支持Android和iOS一个反应天然机模块重新使用共同C和C ++算法(非UI)。 从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适用于Qt 5.6等C ++框架 我不明白如何在避免使用Java JNI的同时将javascript转换为本机Native模块?

提前感谢任何提示或方向,

我最近不得不在React Native项目中执行此操作,如果不使用JNI,我无法找到解决方法。 为此,您必须为JS到Java桥构建代码,然后为Java到C(通过JNI)桥构建更多代码,然后再返回JS。

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

我有一个github项目 ,它使用JNI来传递一些示例类。 这篇博客文章解释了JNI的所有设置步骤,如果您对此感到满意,那么它将在“真实世界JNI”部分中详细介绍。 如果您对此有任何疑问,请与我们联系!

如果你愿意做一些额外的工作,你可以使用Djinni

该项目为Objective-C和Java生成接口绑定。 一旦为C ++创建了包装器代码,就可以创建与React Native集成的Java和Objective-C类。 因此,React将调用将调用C ++的Obj-C / Java。 利润。

很高兴看到这对你有什么用,我还没见过有人这样做过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM