1. 背景
在日常开发中,大家常用 AI 工具(如 ChatGPT、DeepSeek 等)进行代码分析。但通过网页 AI 工具分析代码时,缺乏上下文,需要手动分段粘贴代码,效率低且容易遗漏关键信息。
公司引入 Copilot 后,大家多在 VS Code、Android Studio 等 IDE 插件中用 Copilot 进行代码分析。Copilot 能直接分析当前编辑器中的代码,并支持上下文,极大提升了分析效率,减少了人工粘贴的麻烦。
但实际开发中,仍存在以下痛点:
- 代码跳转不连贯:对于 Android.bp soong 构建系统下的 Android 代码,不能自由地跳转到方法定义、实现、符号等。
- 查找方法繁琐:大部分 Android framework 开发,是通过 VS Code 或 Android Studio 打开整个项目代码文件夹,然后用全局查找指令定位方法。这会导致通过 Copilot 分析代码时需要手动查找、复制,容易中断思路,且查找结果不一定精准。
实际开发中发现,通过 aidegen 在 VS Code 和 Android Studio 中配置模块化代码加载环境,支持自动跳转功能,结合 Copilot 的上下文分析和分段解释能力,可以实现持续、连贯且高效的代码分析流程,从而提升 Android 项目的代码分析与开发效率,有效解决上述痛点。
2. 应用场景
2.1 VS Code + Copilot Android 代码分析
对于 HAL 层可配置 VS Code + Copilot Android 代码分析环境。
下面以分析 Android 系统中的 android/bootable/recovery 模块代码来说明实施步骤。
2.1.1 配置 VS Code Android.bp 代码自动跳转环境
把原有的 C++ 相关的插件卸载掉,安装 clangd 插件。
2.1.2 使用 aidegen 生成 VS Code 模块化工程文件
aidegen(Android IDE Generator)是 Google 提供的一个用于 Android 开发的命令行工具,主要用于自动生成适用于 IDE(如 Android Studio、IntelliJ IDEA、VS Code 等)的工程文件。
它可以帮助开发者快速把 Android 源码中的某个模块(如 app、framework、JNI、native 代码等)导入到 IDE 里,方便代码阅读、调试和智能跳转。
在 android 代码路径下(例:/workspace/tegu/android)执行如下编译指令:
source lunch
source build/envsetup.sh
lunch (对应product)
cd bootable/recovery
aidegen -i v -s
执行上面指令后,VS Code 会被自动拉起来,并会在当前目录生成工程文件 bootable.recovery.code-workspace。
备注:
aidegen -i v -s 不仅可以对单独模块生成工程文件,还可以对某个路径下的所有模块生成一个工程文件,在相关路径下执行即可。
2.1.3 VS Code 中配置工程文件
VS Code 被自动拉起来后工作空间如下,其会自动加载当前模块代码和 bootable.recovery.code-workspace 文件。
在生成的 bootable.recovery.code-workspace 文件中添加如下蓝色框内的全局配置,红色框的内容需根据不同项目的 out 路径进行配置。
{
"folders": [
{
"name": "bootable.recovery",
"path": "/home/workspace/tegu/android/bootable/recovery"
}
],
"settings": {
"clangd.arguments": [
"--compile-commands-dir=/home/workspace/tegu/android/out/soong/development/ide/compdb"
]
}
}
2.1.4 重新加载更改后的配置
配置完成后关闭当前 VS Code,右键修改后的 bootable.recovery.code-workspace 文件,使用 VS Code 重新打开。
2.1.5 检查配置是否成功
第一次配置的时候,VS Code 右下角会提示安装 clangd 的相关依赖压缩包,按照提示点击允许并进行下载。
下载完成后再重复步骤 2.1.4 即可。
配置成功的情况下,相关方法有了提示,并可以自由跳转。
2.1.6 使用 Copilot 整体分析该模块代码
上下文添加当前工程文件,并询问。
上面相关的文件夹和文件会生成链接,都可以点击进行查看/询问/分析。
2.1.7 结合自由跳转功能,使用 Copilot 进行持续分析
光标定位到某一个方法上,CTRL + 鼠标左键 点击,即可跳转到具体实现方法中(包括非本模块的方法实现,如本模块所依赖的原生库方法实现也可以跳转查看实现)。
2.1.8 配置光标前进和返回快捷键
可以对光标的前进和返回配置自己习惯的快捷键。
配置后的好处:比如当前光标在方法 A 上,然后跳转到另一个文件的方法 B 上,我们可以用光标返回快捷键再回到 A,或者再前进到 B。
AI 工具会自动锁定当前查看的文件和代码行,因此可以直接帮助分析。
也可以针对当前光标某行进行询问。
2.2 Android Studio + Copilot Android 代码分析
对于 JAVA 层可配置 Android Studio + Copilot Android 代码分析环境。
下面以分析 Android 项目代码中 android/packages/apps/Music 模块代码来说明实施步骤。
2.2.1 使用 aidegen 生成 Android Studio 模块化工程文件
aidegen(Android IDE Generator)是 Google 提供的一个用于 Android 开发的命令行工具,主要用于自动生成适用于 IDE(如 Android Studio、IntelliJ IDEA、VS Code 等)的工程文件。
它可以帮助开发者快速把 Android 源码中的某个模块(如 app、framework、JNI、native 代码等)导入到 IDE 里,方便代码阅读、调试和智能跳转。
在 android 代码路径下(例:/workspace/tegu/android)执行如下编译指令:
source lunch
source build/envsetup.sh
lunch (对应product)
查看 android/packages/apps/Music 编译配置中的模块名:
android/packages/apps/Music$ cat Android.bp
android_app {
name: "Music", //模块名为 Music
srcs: ["src/**/*.java"],
resource_dirs: ["kotlin/res"],
sdk_version: "current",
product_specific: true,
optimize: {
proguard_flags_files: ["proguard.flags"],
},
}
执行:
aidegen Music -i s -p <your_android_studio_path>/bin
其中 <your_android_studio_path> 替换为你本地 Android Studio 的实际安装路径。
例如:
aidegen Music -i s -p /soft/android-studio-2022.1.1.21-linux/android-studio/bin
执行上面指令后,Android Studio 会被自动拉起来,自动生成模块化配置环境。
并且会自动生成本模块的外部依赖,支持跳转到依赖模块,方便查看相关调用的具体代码实现。
工程配置成功后,即可实现代码的自由跳转,并结合 Copilot 的上下文分析和分段解释能力,进行持续的代码分析,其分析流程与 VS Code 环境分析流程类似。
3. 总结
通过使用 aidegen 工具配置 VS Code 和 Android Studio 的模块化代码环境,结合 Copilot 的上下文分析能力,可以实现:
- ✅ 自由代码跳转:支持方法定义、实现、符号的快速跳转
- ✅ 高效代码分析:Copilot 自动锁定当前文件和代码行,提供精准分析
- ✅ 持续连贯分析:无需手动查找和复制代码,保持分析思路连贯
- ✅ 多模块支持:可以分析单个模块或整个路径下的所有模块
这套方案有效解决了 Android 源码阅读中的代码跳转和查找问题,大幅提升了代码分析效率。
欢迎来我中的个人主页找到更多有用的知识和有趣的产品