1.问题描述
编译android4.4的时候,突然编译停止在
target SharedLib: libwebviewchromium (out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so)
最后出现编译错误:
build/core/shared_library_internal.mk:68 recipe for target 'out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so' failed
make: ** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1
make: ** Deleting file 'out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so'
make: Leaving directory 'home/username/android'
#### make failed to build some target (07:53:05 (hh:mm:ss)) ####
2.问题分析
android在编译的时候占用大量的内存,如果物理内存不够用,则会用swap内存来替代;如果swap空间太小,android编译就会出错。
3.解决方案
1.增加电脑的内存条。2.给虚拟机分配多一些内存。3.增加swap分区的大小。3.重启ubuntu。
第一个方案有时候不太实际,见效慢一点,但长远来看是很值得去做。第二个方案是可行的,但受限于你电脑的总内存。第三个方案可行,只不过swap分区其实就是硬盘空间,访问速度比不上内存,但毕竟便宜。第四种方案是在前两三种方案不见效的时候可以试试。
本人给虚拟机分配了8G的内存空间,还是出现那个问题,然后我给虚拟机增加了swap分区,问题还是没有解决。最后重启虚拟机,再编译一次就通过了。想了一下,猜测是之前编译错误后再尝试过两次,导致虚拟机的内存空间一直被占用,没有释放,在重启虚拟机的时候就释放了所有内存空间。
编译完之后,内存占用如下:
topeet@ubuntu:~/Android$ free
total used free shared buffers cached
Mem: 8174784 7063752 1111032 0 22512 6379800
-/+ buffers/cache: 661440 7513344
Swap: 2047992 20848 2027144