一,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 用于调试原生代码的调试程序。