问题描述

刚把1804虚拟机搭建起来,然后迫不及待的把Android Q代码编译起来,结果每次在编译一两分钟之后就把如下错误,也不报具体源码哪里有问题,搞的脑子着实大。

1
2
3
4
5
6
7
8
vendor/qcom/build/tasks/generate_extra_images.mk:558: warning: overriding commands for target `kernelclean'
device/qcom/common/generate_extra_images.mk:558: warning: ignoring old commands for target `kernelclean'
vendor/ts/build/tasks/gen_vehiclecfg_img.mk:87: warning: overriding commands for target `out/target/product/msmnile_gvmq/vehicledefcfg.img'
build/make/core/Makefile:1869: warning: ignoring old commands for target `out/target/product/msmnile_gvmq/vehicledefcfg.img'
vendor/ts/build/tasks/gen_vehiclecfg_img.mk:123: warning: overriding commands for target `out/target/product/msmnile_gvmq/vehicleconfig.img'
build/make/core/Makefile:1916: warning: ignoring old commands for target `out/target/product/msmnile_gvmq/vehicleconfig.img'
// 留意一下这个错误
18:30:48 ckati failed with: signal: killed

以上错误ckati构建系统强行把编译行为中止了。

找了好多资料都没有找到原因是啥,平白无故的将我的编译行为杀掉了,我就猜测是不是什么系统资源不够了?因为之前把内存调到4G的时候,系统经常不报代码原因,直接被干掉了。

于是基于这一点,查到默认安装的Ubuntu18,分区是自动分的, swap 分区只给了2G。但是电脑内存16G,一般swap分区要大于或等于物理内存(1-1.5倍),而且刚跑程序电脑卡死无奈重启,top命令最后引起我注意的是进场command:kswapd0, 所以摁下重启键回来增大swap分区试试。

问题处理

增加交换分区步骤如下:

  • 1.查看内存情况:free -m
  • 2.创建一个新的swap文件
    sudo dd if=/dev/zero of=swap bs=1G count=24
    count的值是24G, 创建文件名为swap。(这步应该在/路径下执行了
  • 3.创建swap文件系统
    sudo mkswap -f swap
  • 4.开启新的swap
    sudo swapon swap
  • 5.关闭并删除原有的swap文件
    sudo swapoff swapfile
    sudo rm /swapfile
  • 6.设置开机启动
    sudo subl /etc/fstab
    将原有的swapfile改为swap

结论

安装如上配置之后,就可以开开心心编译系统了。经过半天的编译,正常情况下就会编译成功了

编译Android成功.png

编译系统整包成功.png