har*_*ara 6 java-native-interface android android-ndk
两年前,我在android-7(Eclair)上开发了一个增强现实框架.由于AR应用程序是计算密集型任务,因此我开发了Java活动使用的JNI c ++库来呈现和注册虚拟环境.在Java中获取的传感器读数被传递到下划线c ++库以计算虚拟环境的注册.三维对象由从GLSurfaceView调用的本机绘制函数呈现.这导致了大量的JNI调用.
现在我想将应用程序移植到android-15(Ice Cream Sandwich).从android-9(Gingerbread)开始, Android允许使用NativeActivity.
我想了解哪种是开发AR应用程序的更好方法.由于每个JNI调用都会引入开销,因此避免它们会好得多.是否可以使用NativeActivity?我没有找到解释NativeActivity如何工作的详尽指南,但是阅读本文档似乎无论如何都会导致很多JNI调用.是否有任何架构文档可以解释NativeActivity的工作原理?NativeActivity只是一个"JNI包装器"来避免java代码吗?关于性能,使用NativeActivity而不是像以前那样使用JNI库有什么优势吗?
非常感谢.
NativeActivity不会为您的框架带来性能提升.它仍然使用JNI与系统进行通信,仅在封面下.
而且,有充分的理由不使用它.如果我正确理解您的目的,您希望其他应用程序利用您的代码.通过强制他们使用NativeActivity,您会严重降低他们的自由,并要求他们在不太熟悉的环境中挣扎.NativeActivity存在许多限制,例如,它无法加载多个JNI库.
最后,如果您寻找AR框架的优化,我会建议一个完全不同的方向:您可以使用新的setPreviewTexture() API.
归档时间: |
|
查看次数: |
3754 次 |
最近记录: |