01_ndk目录介绍
Posted 绿茵好莱坞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01_ndk目录介绍相关的知识,希望对你有一定的参考价值。
精力都放在安卓上。所以说呢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.所以说你想在黑窗口命令行里面搞的话就要把它放到环境变量里面.
它默认你一运行这个ndk-build会到你当前的这个文件夹里面去找有没有安卓的工程.实际上C:\\Users\\ZHONGZHENHUA>这个目录下没有安卓的工程.所以它报了找不到安卓工程的错.如果你没有配到环境变量里面你去敲ndk-build,它会报找不到系统命令的错误.把能够看见ndk-build的这一级目录放到环境变量里.
以上是关于01_ndk目录介绍的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅介绍一下NDK开发中关于JNI函数的两种注册方式:静态注册和动态注册
AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)