读完第一个例子之后,我将带着大家分析ndk各大模块,之后我会一个个来揭露ndk神秘面纱。如果对ndk环境不熟悉的话,那么请移玉步至跟我详读ndk(第一篇)。那么ndk有哪些主要模块呢?我们又如何去把ndk分析透呢?
一、ndk提供的组件模块
1.Android NDK的结构
2.构建系统
3.Java原生接口头文件
4.C库
5.Math库
6.POSIX线程
7.最小的C++库
8.ZLib压缩库
9.动态链接库
10.Android的日志库
11.Android像素缓冲区库
12.Android原生应用API
13.OpenGL ES 3D图像库
14.OpenSL ES原生音频库
15.OpenMAX AL最小支持
二、Android NDK的结构
在安装ndk后,在该目录下有一些重要的文件和文件夹,我来帮大家介绍一下:
1.ndk-build:该shell脚本是Android NDK构建系统的起始点。
ndk-build 编译
ndk-build clean 清掉二进制文件
ndk-build NDK_DEBUG=1 编译为可调试版的二进制文件
ndk-build NDK_DEBUG=0 编译为release版
ndk-build V=1 执行ndk-build且打印出它所执行的详细编译命令。
ndk-build -B 强制重新编译
ndk-build -B V=1 -B 和 V=1 的组合
ndk-build NDK_LOG=1 打印出内部的NDK日志信息(用于调试NDK自己)
ndk-build NDK_APP_APPLICATION_MK=<文件路径> 用这里指定的路径寻找Application.mk文件
ndk-build -C <project路径> 先cd进入<project路径>,然后执行ndk-build。
2.ndk-gdb:该shell脚本允许用GUN调试器调试原生组件。后面我会详细讲3.ndk-stack:该shell脚本可以帮助分析原生组件奔溃时的堆栈追踪。后面跟ndk-gdb连用讲
4.build该目录包含了Android NDK构建系统的所有模块。
5.platforms该目录包含了支持不同Android目标版本的头文件和库文件。如stdio.h,stdlib.h,jni.h
6.samples这个目录包含了一些例子。对于刚入学的学者建议先跑完例子
7.sources这个目录包含了许多共享的c/cpp/h/so文件。
8.toolchains该目录包含目前Android NDK支持的不同目标体系结构的交叉编译器。Android NDK目前支持ARM、X86和MIPS机体系结构。