Android源码编译笔记——Android 9.0源码编译

之前写过一篇 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值