我能否编写一个纯C++的Android应用程序?(例如,使用NDK?)
考虑到功能没有区别,纯Android C++应用程序是否比Android Java应用程序更快、消耗更少的内存?我的猜测是肯定的,因为C++应用程序不会进行垃圾回收,这会导致帧率的卡顿。
我能否编写一个纯C++的Android应用程序?(例如,使用NDK?)
考虑到功能没有区别,纯Android C++应用程序是否比Android Java应用程序更快、消耗更少的内存?我的猜测是肯定的,因为C++应用程序不会进行垃圾回收,这会导致帧率的卡顿。
是的,尽管谷歌说:
"使用本地代码不会自动提高性能,但总会增加应用程序的复杂性...... 如果您编写本地代码,则仍会将您的应用程序打包成.apk文件,并且它们仍在设备上的虚拟机内运行。 基本的Android应用程序模型不会改变。"
来自http://developer.android.com/sdk/ndk/index.html
(个人认为,使用C++编程不会比Java更加复杂,甚至可以说对于熟练的C++程序员恰恰相反)
有几个原因需要这样做。
其中一个原因是为了最终避免不断遭遇新的破损,因为你被迫从一个破损的工具链“升级”到下一个,当你几乎控制住破损时。
在安卓设备上,你不能使用纯C++编程。
这是没有必要的。因为你仍然在与Java代码运行在同一个虚拟机中。所以,除非你需要挤出那些微小的性能差距,否则你应该选择用C++编写CPU密集型程序,并通过Java代码调用它们。
如果你正在开发游戏,那么就使用Java和OpenGL ES,并将重度计算转移到计算着色器中。
android.app.NativeActivity
,甚至有一个内置的可重用活动可以用作您的 C/C++ 代码的包装器(因此您甚至不必纠结于 Java 方面来运行您的应用程序)。 - Mario