Ari*_*hys 16 c c++ java android android-ndk
是否有可能用C/C++编写一个完整的NDK应用程序而没有像hello-jni示例项目(HelloJni.java)中的Java"启动"类 - 以某种方式创建一个HelloJni.c,它会做同样的事情吗?
tre*_*nki 16
从Android 2.3(API Level 9)开始,NativeActivity允许用户仅使用C++编写Android应用程序代码.在NDK包中还有一个例子.
来自NDK概述的报价:
什么时候开发本地代码
NDK不会使大多数应用程序受益.作为开发人员,您需要平衡其优势与缺点; 值得注意的是,使用本机代码不会导致自动性能提升,但总是会增加应用程序的复杂性.一般来说,如果它对您的应用程序至关重要,您应该只使用本机代码,而不仅仅是因为您更喜欢使用C/C++编程.
NDK的典型优选候选者是独立的,CPU密集型操作,不分配大量内存,例如信号处理,物理模拟等.简单地重新编码在C中运行的方法通常不会导致大的性能提升.在检查是否应该使用本机代码进行开发时,请考虑您的要求,并查看Android框架API是否提供了所需的功能.但是,NDK可以是重用大量现有C/C++代码的有效方法.
Android框架提供了两种使用本机代码的方法:
使用Android框架编写应用程序并使用JNI访问Android NDK提供的API.此技术允许您利用Android框架的便利性,但仍允许您在必要时编写本机代码.您可以在运行Android 1.5或更高版本的设备上通过JNI安装使用本机代码的应用程序.
编写本机活动,允许您在本机代码中实现生命周期回调.Android SDK提供了NativeActivity 类,它是一个便利类,它通知您的本机代码任何活动生命周期回调(onCreate(),onPause(),onResume()等).您可以在本机代码中实现回调,以便在发生这些事件时对其进行处理.使用本机活动的应用程序必须在Android 2.3(API级别9)或更高版本上运行.
您无法本机访问服务和内容提供程序等功能,因此,如果您要使用它们或任何其他框架API,您仍然可以编写JNI代码来执行此操作.
我会在移植代码时使用C/C++,也可能在开发跨平台游戏时使用.