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

AOSP 14编译报错求助:Soong构建进程被终止

解决AOSP 14编译时Soong进程被终止(Killed)的问题

进程被标记为“Killed”,最常见的原因是系统内存/交换空间不足——Soong构建工具在分析Android.bp文件生成ninja构建文件时,需要占用大量内存,AOSP 14的代码规模会进一步提升内存需求。以下是具体排查和解决步骤:

1. 确认内存不足问题

执行以下命令查看系统内存和交换空间状态:

free -h

重点关注available列的剩余内存,以及Swap区域的总大小。如果剩余内存不足2G,或者交换空间为0,基本可以确定是内存导致的问题。

也可以通过内核日志确认是否被OOM Killer终止:

dmesg | grep -i kill

如果日志中出现soong_build进程被标记为out of memory并被杀死,直接坐实内存问题。

2. 临时/永久增加交换空间

如果物理内存不足,优先添加交换空间缓解压力:

  • 创建16G大小的swap文件(可根据实际情况调整,建议至少8G):
    sudo fallocate -l 16G /swapfile
    
  • 设置安全权限:
    sudo chmod 600 /swapfile
    
  • 格式化并启用swap:
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  • (可选)设置开机自动挂载swap,编辑/etc/fstab文件添加一行:
    /swapfile none swap defaults 0 0
    

3. 调整Soong的Java内存限制

Soong基于Java运行,可通过环境变量调整其内存分配:

export SOONG_JAVA_MEMORY="-Xmx12G"

根据你的物理内存调整数值(比如16G物理内存设为12G,32G设为20G),执行后重新启动编译流程。

4. 清理旧构建缓存后重试

残留的旧缓存可能导致异常,清理后重新构建:

m clean
# 或者彻底删除out目录(注意备份必要文件)
rm -rf out

然后重新初始化编译环境并启动编译:

source build/envsetup.sh
lunch <你的目标设备代号>
m

5. 检查系统资源限制

部分系统会限制单进程的内存使用,可临时解除限制:

ulimit -v unlimited

该命令仅对当前终端有效,执行后再启动编译。

另外,也可以检查out目录所在磁盘的剩余空间:

df -h $(realpath out)

如果磁盘空间不足100G,也可能导致构建失败,需要清理或扩容磁盘。

内容的提问来源于stack exchange,提问作者Hello There

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:42:38