我对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 ++组件之间的区别吗?
答案 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级别调用的限制是什么,但可能有一些。