一,NDK概述

Android Native Development Kit (NDK)是一套工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载和运行的库或者应用程序。

二,常用ndk-build编译命令(选项)

ndk-build是NDK中的脚本(在命令行中可以认为是一个可执行的命令)可用于编译采用NDK基于Make的编译系统的项目。

1,ndk-build 编译native代码生成.so

例如:命令行中输入ndk-build编译串口通信native代码生成.so库

C:\Users\lza>cd E:/Project/SerialPortProject/android-serialport-api-master/android-serialport-api/project/jni

C:\Users\lza>E:

E:\Project\SerialPortProject\android-serialport-api-master\android-serialport-api\project\jni>ndk-build

运行以上命令后,在jni的同级目录中生成了一个obj文件夹,里面存放的就是刚刚生成的.so库;

 

2,ndk-build clean 移除之前生成的所有.so库(二进制文件)。

E:\Project\SerialPortProject\android-serialport-api-master\android-serialport-api\project\jni>ndk-build clean

 

3,ndk-build V=1    启动编译,并显示编译命令。且打印出它所执行的详细编译命令。

 

4,ndk-build -B 强制执行完整的重新编译。

 

5,ndk-build -B V=1  -B 和 V=1 的组合

强制执行完整的重新编译,并显示编译命令。

 

6,ndk-build NDK_LOG=1

显示内部NDK 日志消息(用于调试NDK 本身)。

 

7,ndk-build NDK_DEBUG=1 强制执行编译为debug版的.so库(二进制文件)

 

8,ndk-build NDK_DEBUG=0 强制执行编译为release版.so库(二进制文件)

 

9,ndk-build NDK_APPLICATION_MK= <file>

使用NDK_APPLICATION_MK变量指向的特定Application.mk文件进行编译。

 

10,ndk-build APP_BUILD_SCRIPT= ./Android.mk

指定NDK编译使用的Android.mk文件

 

11,ndk-build NDK_OUT= <file>

指定编译生成的文件的存放位置

 

12,ndk-build -C <project> 相当于1中的cd <project> ndk-build 其实就是免去1中的 cd 切换目录的操作;

编译位于<project>的项目路径的原生代码。如果不想在终端通过cd切换到该路径,此选项会非常有用。

三,ndk-build 实际操作

运行ndk-build命令(脚本)相当于运行以下命令:

$GNUMAKE -f <ndk>/build/core/build-local.mk

<parameters>

$GNUMAKE指向GNU Make 3.81或更高版本,<ndk>则指向NDK安装目录。可以根据这项信息从其他shell脚本(甚至是你自己的Make文件)中调用ndk-build。

 

四,ndk-build编译需要的条件

需要安装GNU Make 3.81 或更高版本才能使用ndk-build 或NDK。

 

注意:要使用ndk-build命令必须先配置环境变量;关于环境变量和jdk一样;

 

五,Androidstudio NDK开发相关的概念:

Android 原生开发套件(NDK):这套工具使您能在Android 应用中使用C 和C++ 代码。

CMake:一款外部编译工具,可与Gradle 搭配使用来编译原生库。如果你只计划使用ndk-build,则不需要此组件。

LLDB:Android Studio 用于调试原生代码的调试程序。