Android中的Jni图层

时间:2016-08-30 01:11:07

标签: c++ c android-ndk java-native-interface

我对Android系统中的Jni层,NDk LAYER和C / C ++源代码组件LAYER感到困惑。

在基于Android的平台上编写功能时,引入新的自定义组件:

我可以将用c / C ++编写的任何组件称为NDK组件吗?

什么是jni,一个有助于加载c ​​/ C ++共享对象的文件?

我在下面提到了链接:它讨论了如何使用它,但没有明确说明Android平台中使用的命名约定。 https://developer.android.com/training/articles/perf-jni.html

有人可以澄清JNI,NDK和c / c ++组件之间的区别吗?

2 个答案:

答案 0 :(得分:2)

这是一个问题 你有一个用C / C ++编写的名为 NativeGoodAlgorithm 的类 为 NativeGoodAlgorithm 编写一个名为 NativeGoodAlgorithmInterface (JNI)的包装器。
编写一个链接您的本机代码和包装器的Android.mk,以生成一个库(.so) 在Android中,您加载生成的库并编写名为 GoodAlgorithm 的Java类 然后在任何地方调用 GoodAlgorithm

答案 1 :(得分:0)

Java Native Interface(JNI)是一种从Java代码调用C ++代码的方法,反之亦然。

Native Development Kit(NDK)使用JNI让您从Android应用程序调用C ++。

您很可能需要做一些工作来使用NDK从Android应用程序调用现有的C / C ++。例如,您必须确保在要支持的手机上的ARM CPU上运行C / C ++。您必须定义要在两个层之间来回传递的数据结构。我不确定在应用程序中运行的本机代码对OS级别调用的限制是什么,但可能有一些。