在Android中使用Native的好处
Benefits of using Native in Android
所以我开始了一个为期一学期的项目,我的团队决定使用Android作为目标平台。这特别激发了我对一个问题的好奇心。
我想,在大多数开发案例中,Java和虚拟机是最好的开发模式。我的问题是:在什么情况下需要使用本机软件开发工具包(C/C++)而不是Java
根据Android文档,有几点需要记住:
-
"你应该明白,NDK不会让大多数应用程序受益。作为开发者,你需要平衡它的优点和缺点。值得注意的是,在Android上使用本机代码通常不会带来显著的性能改进,但它总是会增加你的应用程序复杂性。">
-
"一般来说,只有当NDK对你的应用程序至关重要时,你才应该使用它——永远不要因为你更喜欢用C/C++编程。">
-
"典型的NDK候选者是独立的、CPU密集型的操作,它们不会分配太多内存,比如信号处理、物理模拟等等。">
这是一组非常广泛的语句(尤其是最后一个)。根据我所读到的,现在使用大多数JVM,通过JIT编译执行字节码的速度几乎,或者说与直接编译到机器代码一样快。因此,我正在寻找多个答案,从更深的意义上澄清,更具体地说,我们什么时候决定使用本地语言进行Android开发,这些情况的一些好例子是什么
来自英特尔开发区,NDK安卓*应用程序移植方法,JNI 的性能影响和成本
具体来说,在Android*应用程序中使用本机代码不会保证性能提升!通常,性能提升可以是在本机代码涉及以CPU为中心的情况下欣赏操作(如SSE指令的重载使用),但其他时候,例如,手头的应用程序为用户提供复杂的web界面,使用本地代码通过JNI可能会阻碍性能。没有关于当NDK应该和不应该被使用时。。。
SSE是原始MMX指令集的扩展,用于复杂的精确算术处理,如3D渲染、游戏、图像处理、语音和手写识别、科学计算。。。等等,所以NDK在这种情况下应该是有用的。
NDK支持以下指令集
- ARMv5TE,包括Thumb-1指令
- ARMv7-A,包括Thumb-2和VFPv3-D16指令,可选支持NEON/VPv3-D32指令
- x86指令
- MIPS指令
近地天体技术支持很有趣,并得出了相同的结论:
可以加速多媒体和信号处理算法,例如视频编码/解码、2D/3D图形、游戏、音频和语音at的处理、图像处理、电话和声音合成性能至少是ARMv5的3倍,性能至少是ARMv6 SIMD。
正如大家所说,当你需要提高应用程序的性能时,建议使用本机Android编程。但我认为使用NDK可能还有另一个原因:多平台代码。
这听起来很疯狂,事实确实如此。当你使用许多平台目标进行编程时(你不使用Xamarin、Corona SDK、Appcelerator等框架),通常你必须为每个平台重新编写大部分控制器和视图代码,这不是一种很聪明的方式。
但是,几乎所有的控制器代码都可以使用standar C/C++移植,因为(讽刺的是!)所有的移动平台都支持standar C/CC++,所以你可以将逻辑写入一些libXXX,并在所有目标平台上重用它,而不会损失很多性能(如Appcelerator或Cordova)。
这是我的看法。
- Android Java USB for native cpp
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- OpenCV Native Android cvtColor crash
- 如何使用Java Native Interface在C++中导入python库-Android Studio
- Android Studio External Native Build 预编译标头
- React-Native android NDK
- Android Native libs - 如何对日志进行写入序列化
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- 我希望QT-App看起来像QT-App,而不是Android-native
- 使用Android Native AassetManager文件层次结构
- 在Android中使用Native的好处
- UnsatisfiedLinkError for native cpp function in Android app
- 调试Android Native C++:激活断点
- Android Native-何时使用64位NDK
- 什么是带有java的Native Android
- Android Native OGLES2: esLoadProgram not declared
- 使用Android NDK从.so文件调用Native函数
- 在Visual Studio 2015中生成默认的Native Activity Android项目时出错
- Eclipse 中的 Android 项目缺少"Add native support"
- Android native library Visual Studio 2015