[RK3399] [Android7.1] 解决Out of memory error问题

        编译Android源码,官方给定的配置为:64位CPU,16G内存,150G存储空间。但是我们的客观情况有时候满足不了要求,最常见的就是内存问题,一般4G,8G的比较普遍,因此在编译时,经常出现out of memory错误。另外对于初学者提醒一句,存储空间一定要大于150G,我在刚开始的时候,没经验,虚拟机只分配了20G空间,后来改为50G、80G、120G都不行,后来直接分了200G,重装了不下七八遍,再后来直接给电脑上了Ubuntu系统,说都了都是泪啊。

 

        言归正传,Android源码在编译时,经常会出现 Out of memory error,如下图所示

我在虚拟机里装了很多遍,编译了很多遍,都是这个错误,关闭jack-admin,再打开,还可以继续编译。按照官方给的解决方案,总是会出现这种错误。下为普遍做法 :

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server

这种做法猜测可能编译之前要执行该指令,关机开机可能要重新再次执行。

就这样停了再编译,多次重复,终于是编译完成了。由于暂时涉及不到android层的改动,只需要修改内核,所以这个问题暂时搁置。

 

        后来再做驱动权限的配置时,实在是需要修改android源码,没办法,重新找了台笔记本,装了linux系统,分了8G的SWAP,8G内存。又重新来了一遍,但是按照上述做法,还是会出现out of memory问题。于是上网搜其他办法,找到一篇,按照这个配置又重新编译,具体操作如下:

        目录为:prebuild/sdk/tools/jack-admin

# 备份jack-admin
$ cp prebuild/sdk/tools/jack-admin ~/Docments/jack-admin.original
 
# 修改jack-admin文件
$ vim prebuild/sdk/tools/jack-admin
 
# start-server方法,笔者的jack-admin在443行,修改该方法中的一句话:
# JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
# 改成下面这行,增加java堆大小。
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx8000M -cp $LAUNCHER_JAR $LAUNCHER_NAME"

看仔细了,增加红色的一段,保存退出。
# 改成下面这行,增加java堆大小。
JACK_SERVER_COMMAND="java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx8000M -cp $LAUNCHER_JAR $LAUNCHER_NAME"

        另外一个目录下,也有jack-admin,我也添加了这段,目录为:

        out/host/linux-x86/bin/jack-admin

 

        如果没有SWAP分区,自行百度查询,这里就不在说了。

        经过这步操作,重启电脑(这种方式可以重启电脑,第一种方式可能重启后要重新配置),然后直接source build/envsetup.sh ------>  lunch ----------> 选型号,我的是45 -------->make -j8 ,然后回家睡觉去了,第二天来一看,编译成功,没有报错,到此终于编译完成了,真是功夫不负有心人啊。

 

        这种问题主要还是内存不够引起的,有条件直接加内存条,没条件,就只能创造条件喽,有同样问题的伙伴们,可以按照这种方式 改一下,记得增加SWAP分区,可能就不会再出这种问题啦。

 

        最后,提供一下参考链接:

        https://blog.csdn.net/u011784994/article/details/80990890

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章