2016-08-30 55 views
-2

我對Android系統中的Jni圖層,NDK LAYER和C/C++源代碼組件LAYER感到困惑。Android中的Jni圖層

當基於Android平臺的刻錄功能,引入新的自定義組件:

我可以指用C/C++作爲NDK組件的任何組件?

什麼是jni,幫助加載c/C++共享對象的文件?

我在下面提到的鏈接:它談論如何使用它,但並不完全明確在Android平臺中使用的命名約定。 https://developer.android.com/training/articles/perf-jni.html

有人可以澄清JNI,NDK和c/C++組件之間的區別嗎?

回答

2

這是一個worlflow。
您有一個以C/C++編寫的名爲的NativeGoodAlgorithm
寫封裝NativeGoodAlgorithm調用NativeGoodAlgorithmInterface(JNI)。
編寫一個鏈接你的本地代碼和包裝的Android.mk來生成一個庫(.so)。
在Android中,您加載生成的庫並編寫一個名爲的Java類GoodAlgorithm
然後你可以撥打GoodAlgorithm無論你想要的地方。

0

Java本地接口(JNI)是一種從Java代碼中調用C++代碼的方式,反之亦然。

Native Development Kit(NDK)使用JNI讓您從Android應用程序調用C++。

您很可能不得不使用NDK從Android應用程序調用現有的C/C++。例如,您必須確保您的C/C++運行在您想要支持的手機上的ARM CPU上。你必須定義你想要在兩層之間來回傳遞的數據結構。我不確定操作系統級調用的限制是否適用於在應用程序中運行的本機代碼,但可能有一些。

+0

如果我使用c/C++語言編寫我的程序,那麼我可以將我的組件稱爲NDK組件嗎? – Just

+0

我不認爲這會很簡單。不過,您可以嘗試:使用C++的一小部分,並查看是否可以使用NDK從Android應用中調用它。 – cthrall

+0

我的意思是,如果使用c/C++編寫,我可以使用/名稱/地址,我的組件是NDK嗎?我可以對所有人說我寫過NDK組件嗎? – Just