Android源码编译失败,没有具体错误信息

错误现象

编译Android源码,时不时就会编译不过,而且没有具体的报错信息,error.log / soong.log中没有任何具体的错误信息,和make时打印出来的信息一样。参见下图。
此时,重新sync或者restore改动都无效。
在这里插入图片描述
error.log

FAILED: out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
Outputs: out/soong/build.ninja
Error: exited with code: 1
Command: out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Output:
Clang SA is not enabled
Killed

解决方法

出现这种情况,一种可能的原因是swap分区满了。
当我遇到这种错误上,用下面两种方法看到的swap占满了。我看着内存不是很小,以为swap分区大概率不会用到,没有修改swap默认值(2G)。实际经验来看,32G内存对编译Android源码来说算不上很富裕,在编译的同时,我们往往会打开一些开发工具比如Android Studio,浏览器Chrome等,这些都是内存消耗大户。

解决方法一

重启电脑,再次编译就可以正常进行了。
当打开的应用比较多时,可能再次出现问题。

解决方法二

调整swap分区大小。
根据一般经验,swap设置为物理内存2倍左右的大小,对于32G内存的电脑,设置64G的swap。可以根据实际需要,设置需要的大小。
顺便说一句,swap本质上是在硬盘上换出来的交换分区,物理内存不够用了就把数据交换到swap中。现在的高速固态硬盘做swap用起来还是比较爽的,但是,但是,但是,因为读写比较频繁,可能会影响固态硬盘的寿命。如果是个人自己的电脑,要考虑一下哦,呵呵

调整swap分区的方法:

查看swap分区

通过命令行查看

$ free 
              total        used        free      shared  buff/cache   available
Mem:       32586296     3081844    10067916      959608    19436536    28078536
Swap:      62499996     1515520    60984476

通过Ubuntu自带的system monitor工具查看

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yinminsumeng/article/details/129120073