Android 源码查看笔记

1 准备条件

  • ubuntu系统
  • vs code; vs code安装使用clangd插件、Extension Pack for Java插件
  • 系统安装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
  1. 打开 VS Code 的 settings.json (Ctrl+Shift+P -> Open User Settings JSON),json跟中插入:
kotlin 复制代码
"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 交叉编译器
]
  1. AOSP 源码根目录下新建一个文件,命名为 .clangd
bash 复制代码
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*] # 移除不支持的编译器参数
  1. 重启服务: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
  3. 两个命令执行不同结果
  • 执行idegen,在根目录下生成android.ipr和android.iml文件,使用AS或者ASFP工具查看,打开ipr文件即可;使用
  • aidegen 模块路径 -i s/v, s代表AS/AFSP工具查看,在模块路径下*.iml,可开iml文件即可;v代表vscode,直接加载即可

若aidegen 命令报错python相关问题,是python不兼容

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

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

相关推荐
松仔log1 小时前
Java中级——组合和继承
android·java·开发语言
我命由我123455 小时前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
lilian2336 小时前
Harmony os 技术实战|拼豆制图06:收藏 ID、生成记录与重启恢复怎么不打架
android·java·数据库·harmonyos
2601_955759626 小时前
ClaudeAPI成本中心与业务标签设计指南
android·java·数据库
余衫马6 小时前
2026最新版!Android Studio 极速安装与配置指南
android·ide·android studio
AFinalStone6 小时前
Android 7系统异常问题排查(五)Framework层(下)—System Server崩溃
android·tombstone·系统异常
AFinalStone6 小时前
Android 7系统异常问题排查(八)系统追踪—Trace机制与性能诊断
android·系统异常
极客猴子10 小时前
Android录音转写频繁卡顿?多款APP长时间会议场景稳定性实测
android·人工智能·智能手机·飞书
Kapaseker10 小时前
Boolean 变量到底该怎么命名?
android·kotlin
AFinalStone10 小时前
Android 7系统异常问题排查(六)应用异常(上)—ANR机制全解
android·系统异常