一、基本环境搭建
1.软件支持
首先下载Visual Studio Code和Android Studio
选择对应系统的软件最新版本,下载完成后安装即可
2.软件环境
①.Visual Studio Code
打开vscode,按下Ctrl + Shift + X进入拓展,在搜索框内输入C/C++ Extension Pack,然后选择安装(install),安装完成后如下所示(如已经安装则忽略)
②.Android Studio
打开Android Studio,创建Native C++应用或者打开已经存在的项目,然后选择File -> System Settings -> Android Sdk -> SDK Tools,勾选NDK(Side by side),然后点击Apply(如果已经安装可以忽略)
然后记住ndk安装的路径,一般为Android SDK Location该路径下的ndk文件夹中,不同版本对应一个子文件版本,以作者安装路径为例为:"D:\RJ\AndroidSDK\ndk\25.2.9519653"
二、具体项目开发
1.打开C/C++代码目录
使用vscode打开android-ndk项目中需要开发的的cpp目录或jni目录
如下图所示
2.无法找到头文件的错误提示
鼠标移动到任意红标头文件上,然后再弹窗的错误提示框中选择快速修复
然后选择第一个'编辑"includePath"'选择
3.添加C/C++配置文件
在弹窗的配置页面中,点击以下内容中的"c_cpp_properties.json"文本
通过单击文件链接或使用以下命令切换到 c_cpp_properties.json 文件:
C/C++: 编辑配置(JSON)
或者可以在当前根目录中,创建.vscode文件夹,然后创建名为"c_cpp_properties.json"的文件,并填入以下内容:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
4.添加头文件路径
在打开的"c_cpp_properties.json"文件中添加头文件路径
找到"includePath"数组项,然后在内容中添加你的ndk路径+“\\toolchains\\llvm\\prebuilt\\windows-x86_64\\sysroot\\usr\\include”,作者ndk路径为'D:\RJ\AndroidSDK\ndk\25.2.9519653",则如下所示
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:\\RJ\\AndroidSDK\\ndk\\25.2.9519653\\toolchains\\llvm\\prebuilt\\windows-x86_64\\sysroot\\usr\\include\\c++\\v1\\**",
"D:\\RJ\\AndroidSDK\\ndk\\25.2.9519653\\toolchains\\llvm\\prebuilt\\windows-x86_64\\sysroot\\usr\\include\\**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
5.配置完成
这时就配置好了,回到之前红标的文件,可以发现红标少了很多,剩下的红标也一般不用特别处理,如果引用了非android官方的头文件,则可以重复上一步,加上其头文件所在目录即可
三、其他
1.本文仅解决了部分编写时找不到头文件和无法跳转的问题,如果有更好的方法欢迎讨论
2.android studio高版本配合ndk高版本也能达到部分该效果,但是有些时候还是不能找到头文件
3.如果要编译和JNI部分,这篇文章不会涉及,如有需要可见官方文档: