一、认识Cygwin、NDK和jni
首先来认识一下什么是Cygwin、NDK和jni。
Cygwin:Cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。本文就是要用Cygwin模拟Linux环境,使用NDK中的编译工具,来编译jni程序。
NDK:谈到NDK,想必大家都会想到SDK(Software Development Kit, 即软件开发工具包 )。SDK一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK自然就是开发Android程序时使用的软件开发工具包。NDK的全称是Native Development Kit,android NDK官网上是这么说的"The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++。"意思是说,NDK是一套用来帮助我们在程序中添加C/C++代码的工具集合。通常,我们使用NDK中的编译工具来将C/C++代码编译成库文件。
jni:JNI是Java Native Interface的缩写。jni是为了让java能够调用本地已编译代码(尤其是C和C++)而设计的,只要调用约定受支持,也可以调用其他代码