[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

 

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