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不兼容

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

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

相关推荐
我命由我1234511 分钟前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime
Meteors.27 分钟前
Android自定义 View 三核心方法详解
android
2501_9160074729 分钟前
前端开发常用软件与工具全面指南
android·ios·小程序·https·uni-app·iphone·webview
赏金术士1 小时前
Android Tinker 热修复集成与使用指南 1.9.15.2
android·热修复·tinker
2603_954138392 小时前
安卓误删文件先别慌!5个实用小技巧指南教你补救
android·智能手机
波诺波4 小时前
5-SOFA可变形的3D物体 5-elasticity.scn
android
2501_915909065 小时前
iOS应用性能优化:十大策略提升用户体验与开发效率
android·ios·小程序·https·uni-app·iphone·webview
sun0077006 小时前
打通android全链路,网卡驱动, 内核 , 到上层hal, framework
android
awu的Android笔记6 小时前
Android VpnService:如何把所有流量导入用户态
android
plainGeekDev6 小时前
AlertDialog → DialogFragment
android·java·kotlin