Android Studio for Platform (ASfP) 中的项目包含为 AOSP 代码库定义工作区的所有内容,包括源代码、资源、测试代码和 Soong build 配置等。
ASfP 基于 IntelliJ 工作区模型构建,可构建大型平台项目,并在启动时从缓存的快照恢复项目模型。out/ 目录中的内容和生成的 gen 文件会从项目搜索范围中排除,以便符号和文件导航保持快速。
项目配置 (.asfp-project)
位于项目目录根目录中的 .asfp-project YAML 文件用于控制 ASfP 项目配置。此文件定义了工作区中包含哪些目录、Soong 模块、语言和 build 标志。
您可以随时使用以下任一选项打开项目配置:
- 从主菜单中选择 ASfP > Project > Open Config 。
- 在 Project 工具窗口的根目录中双击
.asfp-project。 - 在 Soong 工具窗口工具栏中点击 Open Config 。
修改 .asfp-project 后,运行项目同步以使更改生效。
可共享的项目模板(导出和导入)
处理同一子系统(例如 SystemUI、Settings、SurfaceFlinger 或 Automotive)的团队可以将标准 .asfp-project 配置作为模板共享:
Export to template:右键点击
.asfp-project编辑器标签页,或选择 ASfP > Project > Export Config to Template 以保存可共享的模板 文件。
Import from template:在 项目设置向导中创建新项目时,选择 Import from template 并 选择共享的
.asfp-projectYAML 文件,以预填充目录、 模块和 build 设置。
配置参数
.asfp-project 文件支持以下参数:
repo
必需:Android 平台代码库检出根目录的绝对路径。
repo: /path/to/aosp
lunch
必需:与您的项目关联的 lunch 目标。用于所有 Soong build、同步和部署操作。
lunch: aosp_cf_x86_64_phone-aosp_current-userdebug
directories
可选:要在项目中包含或排除的目录(相对于
repo 根目录)。支持符号链接目录和源根目录。
directories:
include:
- frameworks/base
- packages/apps/Settings
exclude:
- vendor
- out/soong
modules
可选:要在项目中包含或排除的特定 Soong 模块。
与 directories 结合使用。支持完整模块名称和缩写模块名称。
modules:
include:
- SystemUI
- frameworks/base/services/core/java:services
exclude:
- UnusedModule
test_sources
可选:当 ASfP 的自动 测试源启发法需要手动替换时,要标记为测试源根目录的相对路径。
test_sources:
- cts/tests/tests/example
- tests/mytests
other_languages
可选:默认启用 Java、Kotlin 和 Android.bp 支持。添加 cpp 以支持 C 和 C++,或添加 rust 以支持 Rust 语言:
other_languages:
- cpp
- rust
build_config
可选:传递给由 IDE 触发的 Soong build 调用(包括同步、装订线 build 和运行配置)的自定义标志或环境变量:
build_config:
flags:
- -j64
env:
SOONG_PARTIAL_COMPILE: true
SOONG_ALLOW_MISSING_DEPENDENCIES: true
同步模式和 Soong 工具窗口
ASfP 提供了多种方法,可根据您的工作流需求将 IDE 项目与 AOSP 检出同步。您可以从 ASfP > Sync 菜单或 Soong 工具窗口访问这些操作:
- Sync Project:分析配置的目录和模块,并 更新 IDE 索引和依赖项。
- Partial Sync:仅同步模块或目录的目标子集, 从而在树的本地化区域中工作时节省时间。
- No-Build Sync:刷新 IDE 项目结构和源根目录,而无需 运行 Soong build 步骤,这在您添加或移动源文件或 已从终端构建时非常有用。
- Sync and Full Build:将项目同步与完整的 Soong build 合并为一个步骤。
Soong 工具窗口(View > Tool Windows > Soong )会显示每个同步任务节点的实时状态指示器、快速访问 build 按钮和 Soong 命令执行。
编辑器内 Android.bp build、部署和导航
ASfP 为 Android.bp 文件提供集成编辑器支持:
从装订线构建、运行和调试目标
在项目中打开任何 Android.bp 文件,以从两个装订线图标构建或启动目标:
- Build 图标(所有命名模块):显示在每个命名
模块(
cc_library_shared、java_library、rust_binary、android_app、 和测试目标)的name:旁边,用于构建该 Soong 目标(Build "<module>")。 - Run 或 Debug 图标(
*_test、*_test_host和android_app):点击测试模块或android_app声明旁边的 Run 以运行或 调试模块。android_test模块通过atest进行调试,cc_test*和rust_test*模块在内置 LLDB 下启动。

上下文部署和 Flash 运行配置
对于 Android.bp 文件中的可部署模块,您可以从装订线或右键点击上下文菜单创建和启动上下文 Soong Deploy 运行配置,并具有以下功能:
- Deployment methods:使用
adb、自定义 shell 脚本、adevice、 或flashall进行部署。 - Pre-run Soong build hooks:在部署到已连接的设备或 Cuttlefish 虚拟设备之前,自动构建目标 Soong 模块。

在源代码和 Android.bp 之间跳转
在 Project 工具窗口、编辑器标签页或编辑器上下文菜单中的任何源文件或目录中,右键点击并选择 Open Corresponding Android.bp File 。ASfP 会找到并突出显示编译该文件的 Android.bp 模块声明,解析 defaults 代码块、通配符 srcs 模式和符号链接。

Android.bp 编辑器智能和工具提示文档
- 跨文件导航和使用次数:按住 Control 键并点击任何模块
引用、
srcs文件或soong_config_module_type,即可跳转到其 声明。可点击的N Usages内嵌提示会显示在模块名称和共享srcs目标旁边,而未引用的库模块会以视觉方式变暗。 - Soong 属性文档工具提示:将指针悬停在
Android.bp文件中的任何 属性上(包括target、arch和multilib下的架构或目标范围 属性),即可内联查看其 Soong 类型 签名和文档。

Cuttlefish 虚拟设备管理和多屏镜像
ASfP 包含一个内置 Cuttlefish 插件,适用于使用本地构建的 Cuttlefish 虚拟设备的平台、Android Automotive OS (AAOS) 和 软件定义汽车 (SDV) 开发者:
- 设备管理器中的多设备设置:使用本地 AOSP 检出(
$ANDROID_BUILD_TOP和$ANDROID_PRODUCT_OUT)在 设备管理器 中创建和管理多设备 Cuttlefish 虚拟设备设置。 - Cuttlefish 工具窗口中的跨屏显示镜像:打开 View > Tool Windows > Cuttlefish 以使用内置 Cuttlefish 跨屏 显示镜像,以便您可以同时查看多个汽车 显示屏并与之互动,从而实现 AAOS 和 SDV 工作流。
