精力都放在安卓上。所以说呢C这个东西不要纠结太多,对大家的要求就是能看懂,会调用。

Java的特点是一处编译到处运行,跨平台。优势是比native语言强,一处编译到处运行。native语言的劣势是不能跨平台。linux上不能用qq。

今天咱们要写的是native,写C,今天咱们要写程序部署到安卓的设备上。安卓设备是linux操作系统,而我现在是想在windows上编写native,本地的代码,然后我想让它运行在linux上。

native平台相关性强。现在咱们是在windows上写程序,最后想让它运行在安卓的手机上。


说一个概念:交叉编译。在一个平台上编译出在另外一个平台上可以运行的本地代码。

平台  cpu平台  x86(intel和amd)  arm(手机上使用的就是arm架构的cpu)  arm与pc上跑的这个x86架构的cpu在指令集和整个硬件的结构都是有区别的。 mips  少见的  

        安卓上最多的就是arm  pc上基本上就是这个x86.  早期的苹果电脑上是IBM搞的那个处理器,它的架构跟x86有区别,但是后来苹果跟IBM分手了,又转投入到了X86的怀抱,现在都用的           是英特尔的cpu.

         操作系统平台  windows  linux  mac os   android就是一个类linux,在它基础之上进行修改.unix 实际上linux和mac os都叫一个类unix操作系统.都是在unix基础之上搞出来的这个东西.

         不同的操作系统所支持的系统的命令是不一样的.x86 cpu支持的指令集和arm支持的指令集也是有区别的.

交叉编译工具的原理:模拟另外一个平台的特性进行编译.

NDK.  Native develop kit.  NDK可以帮助咱们在windows平台 x86 cpu上编译出在linux arm平台或者linux  x86平台上可以执行的二进制代码.可以编译出这样的本地代码.如果你是一个mac os的操作系统,你要下载一个mac版本的NDK来跑.它就是在mac的操作系统上mac os上模拟安卓的特点帮你编译出x86或者arm cpu可以执行的本地代码.

CDT:在eclipse上做C/C++开发的插件.你直接用它是不行的,你指定了一个NDK之后它可以帮助你编译C的代码.如果你不指定这个东西的话你直接想用它来写C的代码,要求你的操作系统,在你当前windows上得装一个C的编译环境.跑eclipse编译java的代码需要有一个JDK,JDK可以帮助你把java进行编译.CDT不包含C代码的编译工具,所以还需要装一个C的编译环境.

今天咱们主要就是写NDK的开发,NDK的包里面包含了C相关的编译的内容.


docs 在安卓下做JNI开发可能会用到的相关的这些文档.跟SDK的文档有点区别了.NDK里面每一个html页面就是一个小专题.界面也没有SDK好看,也没有中文的.

platforms  平台,有不同的安卓的版本.不同安卓版本它所支持的JNI相关的这些内容.最新的NDK版本是r11.

     usr:unix  system  resource.unix系统资源.每一个类unix操作系统你都能找到usr这个目录.

     include:存放跟JNI开发相关的头文件.头文件只不过是对你使用的某些函数的声明,具体的实现得有地方放才行.

     lib:实现在lib里面.

     需要特殊载入的咱们通过配置文件的方式把.so和.a它打包好的这些东西给它载入进来.

     4.0以下的设备很少了.选android-13或者android-14即可.

samples:样例.

sources:源码.跟JNI相关的源代码.SDK的源码你愿意可以看一看,NDK的源码暂时不用看.有功夫还是看SDK的源码好过.

toolchains:工具链.交叉编译的工具链.针对不同CPU平台和不同操作系统平台所用到的交叉编译工具.

build->tools:有一系列的.sh文件..sh就是linux下的批处理命令.类似于windows下的bat文件..sh批处理命令封装了一系列的linux命令,通过它就可以去调用整个的交叉编译的工具链.调用toolchains里面的交叉编译工具,开启交叉编译的过程.

ndk-build.cmd:构建编译.交叉编译的过程是从ndk-build.cmd开始的.你想通过黑窗口在命令行里面编译一个NDK,做NDK的开发,把C的代码编译成可以在linux/安卓上运行的可执行文件,必须得使用ndk-build.cmd.所以说你想在黑窗口命令行里面搞的话就要把它放到环境变量里面.

01_ndk目录介绍_android

01_ndk目录介绍_android_02

它默认你一运行这个ndk-build会到你当前的这个文件夹里面去找有没有安卓的工程.实际上C:\Users\ZHONGZHENHUA>这个目录下没有安卓的工程.所以它报了找不到安卓工程的错.如果你没有配到环境变量里面你去敲ndk-build,它会报找不到系统命令的错误.把能够看见ndk-build的这一级目录放到环境变量里.


01_ndk目录介绍_android_03

01_ndk目录介绍_linux_04