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
相关产品推荐
相关产品推荐

