aospc/c++的native 模块VScode和Clion

张开发
2026/5/14 7:47:06 15 分钟阅读

分享文章

aospc/c++的native 模块VScode和Clion
背景平时做aosp framework代码开发时候都会使用IDE工具进行代码的编写和阅读但是aosp代码其实也不是固定一类的代码比如主要的两类代码Java/konlin和c/c代码对于这两类代码使用的ide也是不一样的。对于Java/kotlin代码一般使用 android studio就可以android studio也是最常用的IDE工具但是搭建源码环境跳转和代码编写时候还是会有坑相关的经验下面这篇文章已经进行了详细说明aosp源码导入android studio无法跳转-学员答疑所以对于aosp的java代码部分ide的选择一般都只有一个那就是android studio。对于C/C代码这块的开发目前马哥使用的都是VSCode居多但是很多学员朋友也反馈现在clion也免费了使用clion也非常非常方便跳转代码百分百准确完全不会像VScode一样部分代码无法跳转。那么事实针真的如此么在aosp的native开发部分真的Clion比VSCode体验好太多么今天马哥亲自带你来解密到底是Clion是不是可以完全替代VSCode开发呢VSCode使用方式及特点1、下载vscode这个其实官网有但是因为实在是网络太卡建议可以https://code.visualstudio.com/下载实在觉得太慢同学私聊马哥获取2、安装下载deb文件命令如下sudodpkg-ixxxx.deb3、启动vscode直接取Ubuntu应用列表中打开VSCode,刚开始进入建议先安装vscode的插件,c/c,c intelligent4、然后在file --open folder打开我们的代码文件夹我这里是仅仅打开的aosp/frameworks文件夹没有打开整个aosp源码目录因为整个aosp代码量太大运行太卡基本做完这几个就可以愉快的看到漂亮的native代码了习惯了eclipse的快捷命令肯定会不知道怎么操作VSCode类似的场景这里总结一些快捷键*1、查找当前工程中某个文件ctlp*2、查找当前cpp文件中某个方法展示出方法列表 ctlshifto*3、返回上一个操作在Linux中可以使用快捷键CtrlAlt -5、打开某个文件夹比如framework这个文件夹但是文件夹中的代码模块可能依赖其他的目录的代码模块比如system/core下面的很多头文件等。这里就可以使用点击 File ---- add Folder and Workspace,再进行额外更多的文件夹加入既可以。所以对于查看源码来说VSCode也算非常方便的要查看哪个目录源码直接打开或者添加就可以即开即用根本不需要什么额外编译对于cmake文件等。本质上VSCode 通过语言服务器和灵活的文件扫描机制能够在不依赖完整构建系统的情况下实现代码跳转。当然它也有写缺点比如跳转代码方法经常无法非常准确判断哪个类的方法会展示较多类供我们用户自己选择类再偶尔会有少量代码无法跳转但是不会太影响使用写代码提示关联不是非常准确如果代码量太大比如整个aosp目录跳转那么就会比较卡所以一般按需要加载代码文件夹。VScode使用场景适合快速阅读大量aosp代码情况可以实现打开即用不需要什么前置操作适合aosp源码中的多个模块本身有相互依赖的情况这样跳转也方便。Clion使用方式及特点下载Clion地址https://www.jetbrains.com/clion/download/?sectionlinux下载完成后会有如下压缩包有大概2G然后进行解压再进入clion的bin目录执行./clion既可以运行后大家可以新加一个c的demo体验一下clion开箱即用的感觉确实clion开发起c应用程序非常的发表这点相比VSCode还要安装插件情况来说还是很有优势。但是注意哈clion其实是需要MakeLists.txt文件的所以说clion可以正常使用各种跳转功能的前提是提前让项目生成CMakeLists.txt。使用clion开发aosp的native代码1、编译相关的CMakeLists.txt准备正常的源码编译环境lunch目标.build/envsetup.sh lunch sdk_phone_x86_64然后export环境变量目的是让生成CMakeListsexportSOONG_GEN_CMAKEFILES1exportSOONG_GEN_CMAKEFILES_DEBUG12、编译有Android.bp的一些模块比如这里以inputflinger为例编译自己需要开发的模块可以mmm直接加目录方式mmm frameworks/native/services/inputflinger/在out目录中会有对应的CMakeListsout/development/ide/clion/在这里选着libinputfliner-x86_64_android的情况进入后确实可以看到这个模块相关的代码体验总结如下1、代码跳转基本湿滑无任何阻碍所有都可以跳转而且跳转基本上可以准确无误不太需要人工确认2、但是跳转如果是外部模块代码一般只可以跳转到对应的.h文件无法跳到对应的实现文件.cpp所以这个对于要多模块开发就是一个非常大痛点3、在编写代码时候基本上写代码的提示完整编写代码效率较高4、不支持和vscode一样随意打开加入一个目录就可以使用clionclion适合场景1、对于aosp的某个native模块是需要精通源码分析或者编写大量代码情况那么clion完整跳转方式和编写代码提示其实clion是最好选择2、对于aosp中是需要分析若干模块一起耦合分析而且这些模块也无法使用共同的CMakeLists那么clion就不适合总结二者差异及适用场景VSCode 通过语言服务器和灵活的文件扫描机制能够在不依赖完整构建系统的情况下实现代码跳转。而 CLion 依赖于 CMake 项目模型和编译数据库确保了对大型项目的精确索引和跳转支持。因此在使用 aidegen 生成项目后若要实现完整的代码跳转功能必须确保生成的 CMakeLists.txt 正确包含了所有源文件并且存在有效的 compile_commands.json 文件。最后用一句话告诉大家在做aosp的c/c代码 native开发时候应该如何选择IDE工具VSCode还是Clion。VScode适用于与aosp中存在多个模块耦合的源码分析场景编写代码量比较少情况不适合需要大量编写代码情况。Clion适用于需要精通某一个单独模块的源码阅读和频繁开发写代码情况不适用于aosp中若干个模块一起阅读开发。所以平常的aosp源码阅读一般还是首选VSCode除非要对某个模块或者新建的模块要进行大量代码修改才选clion。原文地址https://mp.weixin.qq.com/s/VJvIr6j7OvkDoL4z3tu3Uw

更多文章