Android Jni下使用C/C++的几个概念
Google出了Android后,不少嵌入式设备均考虑将其放置于自己的设备上。而我们有大量的程序是使用C/C++开发的,如何将其移植上Android,则成了一个必须面对的问题。
先介绍概念:
1.Android应用程序与Java:
Google在2009年4月底发布的SDK1.5,其SDK文档,仍然是没有丝毫提交JNI之处。Google的态度很明确,请第三方应用开发商都在Java层次上进行应用开发。在Android架构上,Java成了必选的开发方式了(是指Application开发,Service开发是可以完全使用C的)。
2.Java调用C/C++程序与C/C++程序调用Java接口:
JavaNative Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++和汇编语言)编写的应用程序和库进行交互操作。
3. Android对JNI的支持:
(转载)
在Android
4.Android中NDK(转载):
1、NDK是一系列工具的集合。
NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk(APK是Android
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
2、NDK提供了一份稳定、功能有限的API头文件声明。
NDK的发布,许多人会误以为,类似于Symbian、WM,在Android平台上终于可以使用纯C、C++开发第三方应用了!其实不然,NDK文档明确说明:it
NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式。
使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
使用NDK,我们可以将需要保密的应用逻辑使用C开发。毕竟,Java包都是可以反编译的。
NDK促使专业so组件商的出现。(乐观猜想,要视乎Android用户的数量)
2、NDK将是Android平台支持C开发的开端。
5. Android Native C:
Android是JVM架设在Linux之上的架构。所以无论如何,在Linux OS层面,都应该可以跑C/C++程序。
Android Native C就是使用C/C++程序直接跑到Linux OS层面上的程序。
与其它平台类似,只需要交叉编译后。并得到Linux OS root权限,就可以直接跑起来了。