VSCode+cland搭建aosp卡顿修复指南

VSCode + clangd卡顿背景

前面分享了如何使用VSCode + clangd搭建aosp源码环境的文章
VSCode + clangd 配置保姆级教程(方案2)
在这里插入图片描述

其实使用起来确实比以前用微软插件好很多,比如跳转基本上%99可以成功,比以前微软插件%70的成功准确率好很多,但是也有新的痛点问题:
那就是后台经常运行过程中卡顿厉害,硬盘空占用也比较多等问题。

如何确定机器卡顿是VSCode + clangd引起呢?

如果打开VSCode机器卡顿厉害,很多界面操作不了像编译aosp源码一样卡的场景,大家可以使用top命令进行查看:

在这里插入图片描述
如何发现是clangd.main这个进程长期占用cpu过多,那就可以电脑卡顿就是因为VSCode + clangd引发的。

那么下面本文就来介绍几个减少卡顿的技巧。

减少clangd后台cpu占用方法

修改点1:
这里的修改原理就是减少后台的index线程。

.vscode/settings.json 文件中进行index线程等线程,设置index线程优先级为low

 // clangd 启动参数
  "clangd.arguments": [
//省略其他的。。。。

//加入如下日志减少相关的后台cpu耗费

    // 日志级别(调试时可改为 verbose)
    "--log=error",
    "-j=2", //最重要变成双线程或者单线程
    "--background-index-priority=low"

    // 使用所有可用 CPU 核心索引(根据机器性能调整)
  ],
    // clangd 索引线程数(根据 CPU 核心数调整),变成双线程或者单线程
  "clangd.indexingThreads": 2,

完整的.vscode/settings.json文件请看

VSCode + clangd 配置保姆级教程(方案2)

修改点2:
这里的修改目标是减少aosp相关没用依赖模块,这样减轻VSCode的index负担。

在源码根目录创建移除.cland文件夹,彻底删除。
然后创建一个.cland的文本文件,文本文件内容如下:

# AOSP 专用 .clangd 配置

CompileFlags:
  Add:
    # 忽略 AOSP 中常见的无害警告,保持问题面板清爽
    - -Wno-unknown-warning-option
    - -Wno-unused-parameter
    - -Wno-deprecated-declarations
    - -Wno-sign-compare
    - -Wno-macro-redefined
    - -Wno-format
  Remove:
    # 移除 clangd 不识别的 AOSP 特有/交叉编译专用的 flag,防止报错
    - -mno-global-merge
    - -fno-experimental-new-pass-manager
    - -fno-addrsig
    - -Wa,*

Index:
  # 允许后台索引,但范围会被下方的 PathExclude 严格限制
  Background: Build

Diagnostics:
  # 屏蔽部分静态分析警告(AOSP 历史代码中非常多,没必要全改)
  Suppress:
    - "*use-after-move*"
    - "*unused-includes*"

If:
  PathExclude:
    # ==========================================
    # 第一梯队:绝对不需要索引的“巨无霸”目录 (必须排除)
    # 占用了 80% 以上的磁盘空间和 CPU 解析时间
    # ==========================================
    - out/.*             # 编译输出产物
    - prebuilts/.*       # 预编译的庞大工具链
    - external/.*        # 第三方开源库 (极其庞大)
    - cts/.*             # 兼容性测试套件
    - test/.*            # 测试代码

    # ==========================================
    # 第二梯队:上层与虚拟机相关 (按需排除)
    # ==========================================
    - packages/.*        # 上层应用 (主要为 Java/Kotlin,C++ 较少)
    - art/.*             # ART 虚拟机
    - libcore/.*         # Java 核心库
    - bionic/.*          # C 库底层实现

    # ==========================================
    # 第三梯队:平台构建与工具链 (建议排除)
    # ==========================================
    - toolchain/.*
    - tools/.*
    - development/.*
    - pdk/.*
    - bootable/.*
    - build/.*

    # ==========================================
    # 第四梯队:硬件与设备层 (根据当前开发任务调整)
    # ==========================================
    # 你在深入研究 SurfaceFlinger、Zygote 优化等框架层逻辑时,主要依赖 frameworks/ 和 system/。
    # 如果当前不涉及具体的硬件配置,可以将下面三个目录前面的注释(#)删掉,进一步提速。
    # 等你需要调试高通 Perf HAL 或特定设备(如 grus)的底层参数时,再把对应的目录注释回来。
    # - device/.*
    # - hardware/.*
    # - vendor/.*

大家如果有更好的的减少VSCode + clangd搭建aosp源码环境带来的卡顿,过渡耗费cpu的方案记得请留言哈。

原文参考:
https://mp.weixin.qq.com/s/m3hoygKlMyJA3GeUJF7_wA

更多fw,性能实战开发干货,请关注下面“千里马学框架”

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值