簡體   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