Android的Jack编译器试用

        最近在8核(Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz)、64GB内存服务器下编译的Android 6.0时,发现在仅开了四个编译任务(make -j 4)的情况下,服务器的所有CPU占用率和虚拟内存的使用都达到满负荷,导致命令行操作极慢,这在原来编译4.4的时候就算开了八个编译任务都是没有出现过的情况。经分析是因为6.0的java编译工具默认已经由openjdk修改成了谷歌自行开发的jack,这个工具无论是内存占用以及编译任务数都开得很大,而且有时候中断编译过程时其编译任务仍然在后台存在。初步可以判断jack工具还不是很完善。

        从搜索到的信息得知,可以在设备的BoardConfig.mk中加入“ANDROID_COMPILE_WITH_JACK := false”切换到openjdk编译。

        另一种方法是官方所介绍的,可以修改$(HOME)/.jack配置SERVER为false切换到openjdk编译,或者修改$(HOME)/.jack配置SERVER_NB_COMPILE减少并行编译任务数,但是根据我的实际测试结果没有生效,由于不知道在今后谷歌是否会取消openjdk支持,有时间的话再研究一下如何配置jack的内存占用和并发任务数。
==========
2016.6.27补充
设置“ANDROID_COMPILE_WITH_JACK := false”时,Camera2和Gallery2这两个应用编译时会有问题,解决办法是把这两个应用Android.mk文件中的“LOCAL_PROGUARD_FLAG_FILES := proguard.flags”修改为“LOCAL_PROGUARD_ENABLED := disabled”即可。
==========

下面是一些关于jack介绍的链接:
1、Jack (Java Android Compiler Kit)
http://arui.me/index.php/archives/57/
2、Disabling JACK in android compilation
http://stackoverflow.com/questions/36680397/disabling-jack-in-android-compilation
3、Increasing heap size while building the android source code on Ubuntu 15.10
http://stackoverflow.com/questions/34940793/increasing-heap-size-while-building-the-android-source-code-on-ubuntu-15-10
4、Jack-server failing on AOSP master
http://android.2317887.n4.nabble.com/Jack-server-failing-on-AOSP-master-td347701.html

你可能感兴趣的:(linux)