Android源码编译笔记——Android 9.0源码编译
之前写过一篇 Android源码编译笔记——Android 7.1 系统源码编译及运行,欢迎翻阅。本次编译9.0源码,流程是相同的,主要记录期间遇到的问题。编译环境:VMWare Player虚拟机:15.5.6Ubuntu版本:16.04.7虚拟机配置:6核CPU,4G内存,200G硬盘笔者手上硬件条件有限,看网上也有电脑配置很好、一次就编译成功了的,如果读者也有较好的硬件条件,说不定你也就不会
之前写过一篇 Android源码编译笔记——Android 7.1 系统源码编译及运行,欢迎翻阅。本次编译9.0源码,流程是相同的,主要记录期间遇到的问题。
编译环境:
VMWare Player虚拟机:15.5.6
Ubuntu版本:16.04.7
虚拟机配置:6核CPU,4G内存,200G硬盘
笔者手上硬件条件有限,看网上也有电脑配置很好、一次就编译成功了的,如果读者也有较好的硬件条件,说不定你就不会遇到我记录的问题啦。
问题1
ninja failed with: signal: killed
出现这个问题,一种原因是系统内存不足。
解决方法
设置更大的swap空间。可以参考 Linux 下的dd命令使用详解Linux 下的dd命令使用详解 这篇 dd 命令讲解博客的增加swap文件部分。
问题2
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
AOSP 从Android 9.0开始,自带了编译需要的JDK,以笔者的Linux环境为例,所在目录是:prebuilts/jdk/jdk9/linux-x86/。
但是通过命令查看,发现MaxHeapSize参数的值,换算后只有不到1G:
~/android-9.0.0_r46$ ./prebuilts/jdk/jdk9/linux-x86/bin/java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize'
size_t ErgoHeapSizeLimit = 0 {product} {default}
size_t HeapSizePerGCThread = 87241520 {product} {default}
size_t InitialHeapSize = 65011712 {product} {ergonomic}
size_t LargePageHeapSizeThreshold = 134217728 {product} {default}
size_t MaxHeapSize = 1029701632 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5830092 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122914074 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122914074 {pd product} {ergonomic}
openjdk version "9"
OpenJDK Runtime Environment (build 9+181-android4627429)
OpenJDK 64-Bit Server VM (build 9+181-android4627429, mixed mode)
解决方法
添加 _JAVA_OPTIONS 变量,设置更大的MaxHeapSize参数:
$ export _JAVA_OPTIONS="-Xmx4g"
关于 _JAVA_OPTIONS 的用法,读者可自行上网查阅。
解决方法参考了 StackOverflow 的问答:Java OutOfMemoryError when building AOSP 10
更多推荐
所有评论(0)