Android 源码查看笔记

Android 源码查看笔记

作者: 首页
发布时间: 2026-04-21
点赞数: 1
阅读数: 32
评论数: 0
分类: iOS
原文链接: https://juejin.cn/post/7630875298632466470
图片数量: 0
字数: 1780


1 准备条件

AS/ASFP 查看 Java, vs code 查看 C/C++ 代码,这样比较丝滑

  • Ubuntu 系统
  • VS Code; VS Code 安装使用 Clangd 插件、Extension Pack for Java 插件
  • AS (Android Studio) / ASFP
  • 系统安装 Clangd

2 C/C++ 源码

  1. 生成 compile_commands.json 文件

    • 执行 source build/envsetup.sh;lunch 你的版本
    • 执行 export SOONG_GEN_COMPDB=1;m nothing
    • 确认产物 compile_commands.json,可能路径:out/soong/development/ide/compdb/compile_commands.json
  2. 打开 VS Code 的 settings.json (Ctrl+Shift+P -> Open User Settings JSON),json 跟中插入:

    {
        "clangd.path": "/usr/bin/clangd", // 你的 **Clangd** 位置
        "clangd.arguments": [
            "--compile-commands-dir=${workspaceFolder}/out/soong/development/ide/compdb/", // 你的 `compile_commands.json` 父目录
            "--background-index", // 后台建立索引
            "--all-scopes-completion", // 全局补全
            "--header-insertion=never", // 禁止乱插头文件
            "-j=12", // 并行数,根据 **CPU** 核心数定
            "--query-driver=/**/prebuilts/clang/host/linux-x86/**/bin/clang++" // 允许访问 **Android** 交叉编译器
        ]
    }
  3. AOSP 源码根目录下新建一个文件,命名为 .clangd

    CompileFlags:
        # 告诉 **Clangd** 强制使用这个数据库
        CompilationDatabase: out/soong/development/ide/compdb/
        Add: [
            "-I", "frameworks/native/libs/binder/ndk/include_cpp",
            "-I", "system/core/include",
            "-D__ANDROID__"
        ]
        Remove: [-m*, -f*] # 移除不支持的编译器参数
  4. 重启服务:Ctrl + Shift + P -> 执行 clangd: Restart language server

若 make nothing 未生成 compile_commands.json,则使用 Bear 监听

  • 安装 Bear 工具
  • bear -- make 模块名字

3 Java 源码

  1. 执行 source build/envsetup.sh;lunch 你的版本
  2. make idegen 或者 make aidegen; idegen 工具在高版本使用失败,可以根据 development/tools/idegen/idegen.sh 内容进行修改,这时最建议使用 aidegen
  • development/tools/idegen/idegen.sh,在根目录下生成 android.ipr 和 android.iml 文件,使用 AS 或者 ASFP 工具查看,打开 ipr 文件即可
  • aidegen 模块路径 -i s/v, s 代表 AS/AFSP 工具查看,在模块路径下 *.iml,打开 iml 文件即可; v 代表 VSCode,直接加载即可

若 aidegen 命令报错 Python 相关问题,是 Python 不兼容,这时直接使用 idegen 工具即可

如果在此文章中您有所收获,请给作者一个鼓励,点个赞,谢谢支持

技术变化都很快,但基础技术、理论知识永远都是那些;作者希望在余后的生活中,对常用技术点进行基础知识分享;如果你觉得文章写的不错,请给予关注和点赞;如果文章存在错误,也请多多指教!