You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加快AOSP开发的编辑-编译-测试循环速度

AOSP vcard模块atest编辑-编译-测试循环提速方案

以下方法均为AOSP本地开发实测可用的优化手段,针对描述的场景可以把单轮测试耗时压到15秒以内:

前置流程优化

  • 提前手动启动Cuttlefish实例,确认adb已正常连接设备后再跑测试,不要让atest自动执行设备检测、实例拉起逻辑,可直接省掉无实例时47秒的无意义中止等待。
  • 执行测试命令时固定追加--serial <你的Cuttlefish设备序列号>参数,直接指定目标测试设备,跳过atest每次遍历所有adb设备、匹配实例状态的环节。

编译检测环节优化(解决无改动时1分53秒空跑耗时)

明确仅修改frameworks/opt/vcard路径下代码的前提下,完全不需要让atest执行全源码树的改动扫描:

  1. 改完代码后先单独执行m AndroidVCardTests,仅增量编译vcard模块和对应测试包,因为改动范围明确,Soong不需要遍历整个源码树校验文件状态,该步骤在单目录改动场景下耗时通常不超过10秒。
  2. 编译完成后执行atest时追加--no-build参数,直接跳过所有编译相关的文件检测、依赖校验逻辑,完全砍掉无改动场景下的编译检测空耗。
  • 短时间内仅调试vcard模块时,可以在源码根目录执行export SOONG_SKIP_NINJA_PARSING=1,临时关闭Soong对全量ninja构建文件的解析校验,进一步压缩编译耗时。注意切换分支、修改Android.bp配置文件时要先取消该环境变量,执行一次全量编译避免构建异常。

安装环节优化(占总耗时最高的核心部分)

针对测试用例本身仅数毫秒、耗时集中在安装包环节的问题,可以通过以下参数解决:

  • 追加--incremental-install参数,让atest仅推送本地有改动的apk、odex文件到设备,不用每次全量覆盖安装,安装耗时可从1分钟以上压缩到10秒以内。
  • 追加--skip-install-if-no-change参数,atest会先对比本地编译产物和设备上已安装包的哈希值,完全一致时直接跳过安装步骤,无代码改动场景下这一步可以把安装耗时直接清零。
  • 纯vcard解析逻辑调试阶段,不需要依赖系统服务特殊状态的用例,可以直接执行run-test vcard在主机侧JVM上运行测试,不需要推包到设备,单轮测试总耗时不超过5秒。注意涉及Android Framework专属API的用例可能存在兼容性问题,适合前期快速迭代逻辑时使用。

Arch Linux环境额外适配优化

  • 将AOSP源码目录放置在高性能SSD分区,关闭分区的atime更新属性,可大幅提升文件扫描、编译读写速度。
  • 跑测试和编译时预留至少16G以上空闲内存,避免触发swap导致耗时陡增。
  • 当前使用-vm_manager=qemu_cli启动Cuttlefish的配置可以固定写到acloud的全局配置里,不用每次启动手动传参,减少参数解析的额外耗时。

内容的提问来源于stack exchange,提问作者Manuel Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:57:08