NDK开发环境搭建-VsCode

发布时间:2026/7/14 20:08:12
NDK开发环境搭建-VsCode 目录背景什么是NDK开发NDK开发的使用场景VScode中搭建NDK环境工具下载环境变量创建工程编译工程结语背景大家好我是幸运-草在Android开发中我们如果想要通过JNI调用Native(C/C)代码, 就需要使用NDK进行开发请注意我说的是在Android开发中使用的是NDK开发而不是指的是java调用C/C)。本篇文章不会介绍AndroidStudio中搭建NDK开发环境如果需要在AndroidStudio中搭建NDK开发环境也可以先阅读一下这篇文章因为这会让您了解到其中的依赖关系。什么是NDK开发首先要区分NDK开发和JNI开发本质是两码事是不同的应用场景。图片来源百度百科JNI开发是Java标准支持的是为了Java可以调用到C/C代码跟Android没有任何关系。NDK开发是Android提供的是为了让开发者可以脱离Android源码进行Native开发。再做一下解释JNI开发是Java支持的它规定了如何通过java代码调用到C/C代码。无论是不是在Android中只要使用Java都是可以使用JNI的NDK是Android提供的一个开发工具包你可以理解为一个SDK这个SDK可以提供给开发者直接编译出可以在Android平台上运行的动态库、静态库、可执行程序。也就是说通过JNI我们可以实现Java-C/C的调用如果我们还想要C/C代码(表现形式为动态库、静态库、可执行程序) 能够在Android平台上能够运行就必须通过NDK否则你只能在Android源码环境中进行编译。这听起来更像一个交叉编译工具是的没错NDK确实提供了交叉编译工具但它绝不仅仅是纯粹的交叉编译工具他还提供了一些Android环境中需要用到的API接口。NDK开发的使用场景NDK开发通常是为了开发一些高性能的库、比如很多大型的游戏渲染、图像与音视频处理、还有一些复杂的计算等除此之外我们希望可以复用一些已经使用C/C开发好的功能时也需要使用NDK。VScode中搭建NDK环境工具下载VsCode: https://code.visualstudio.com/NDK: https://dl.google.com/android/repository/android-ndk-r26b-windows.zipCmake: https://cmake.org/files/v3.26/cmake-3.26.4-windows-x86_64.zipNinja: https://github.com/ninja-build/ninja/releasesNDK版本、Cmake版本、Ninja版本建议使用较新的如果您查看本文章时上面给的版本已经太老了或者访问失效请您自行下载最新的稳定版即可。Cmake跨平台的交叉编译工具在不同平台下生成不同的构建文件也就是如果你有一套代码想要运行在不同的平台下就需要编写不同的构建脚本, 这样开发者就很麻烦但是如果使用MakeFille那么它可以在任何环境下自动生成不同的构建脚本而不需要开发者去适配多套。需要注意的是Android平台下需要NDK的支持也就是Cmake并不能直接生成Android平台下的构建脚本还需要NDK来协助。Ninja通过Cmake编译后生成的只是构建文件.ninja所以Ninja是去真正执行编译指令的。环境变量我们将上述工具下载解压到某个存放路径后需要将ninja.exe、cmake路径下的bin文件夹添加到环境变量中。创建工程安装好之前的工具以后就已经完成了NDK的环境搭建接下来我们来看一下是如何使用怎么样才可以编译我的代码。一个基本的demo结构src中是一个基本的main.cpp整个项目的CMakeLists.txt一般放到最外层如果您还不会cmake请您务必先学习一下Cmake,下面提供了我这里最基本的一个Cmake配置# 1.cmake最低版本要求 cmake_minimum_required(VERSION 3.20) # 2.项目名字编译的语言C和CXX即C project(myndk C CXX) #3.指定C版本为C17 set(CMAKE_CXX_STANDARD 17) #4.native.cpp 编译为叫ndkdemo的动态库 add_library(ndkdemo SHARED src/native.cpp) #5.依赖库 target_link_libraries( ndkdemo log )工程创建完毕我们下一步就进行编译。编译工程编译的本质就是通过前面安装好的cmke工具ninja工具执行命令完成编译操作所以为了方便以及通用性我们在CMakeLists.txt的统计路径下写一个bat脚本来简化该操作你可以直接复制它按需修改即可。REM 关闭脚本内执行命令时本身的打印 只显示结果 echo off REM NDK的路径修改为你自己的NDK路径 set NDK_ROOTD:/soft/vs_ndk/ndk/android-ndk-r26b REM 清空build目录 创建并进入build目录下 rmdir /s /q build mkdir build cd build REM DANDROID_ABI产物的CPU架构 REM DANDROID_PLATFORM指定最低Android的运行版本 24对应Android7.0 REM DANDROID_STLc_static静态库 c_shared动态库 REM DCMAKE_BUILD_TYPE Debug 保留调试信息 Release 开启编译器优化去掉调试信息 REM .. : CMakeLists.txt脚本的相对位置因为当前在build目录下 cmake -G Ninja ^ -DCMAKE_TOOLCHAIN_FILE%NDK_ROOT%/build/cmake/android.toolchain.cmake ^ -DANDROID_ABIarm64-v8a ^ -DANDROID_PLATFORMandroid-24 ^ -DANDROID_STLc_static ^ -DCMAKE_BUILD_TYPERelease ^ .. ninja pause运行脚本即可编译产物在build目录下。结语当你配置好环境后用该脚本去编译Cmake的工程时除了修改编译选项外、不需要修改其他任何东西。我并不建议开发者在Vscode中安装一些类如CMake Tools的图形化工具一方面是因为安装一些工具后通常会根据工具的不同、有不同的配置文件把你搞得你晕头转向另一方面是在我的过往经历中、也遇到过只会用git GUI提交代码、不会使用命令提交代码的同事。无论图形化界面如何变化、我们了解了其中的本质就会更加游刃有余。准确的来说我们并不是在讲解VsCode中的NDK编译环境的搭建、因为NDK环境从来不依赖代码编辑器、它只是命令行工具而已。看完这篇文章如果您需要在AndroidStudio中的搭建NDK环境您会有更加透彻的认识。如果您还觉得这篇文章还不错还请您点个赞或收藏鼓励一下

相关新闻