Ubuntu16.04 LTS 编译Android6.0.1源码


1.源码下载。
源码最好还是从google官网下载。但是国内比较坑爹,google下载不了。可从其他平台下载,如清华镜像AOSP。详情下载方式可参考清华镜像下载帮助:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
也可从本人网盘下载。百度网盘下载有速度限制,很慢。可晚上睡觉期间后台下载。
百度网盘地址:
http://pan.baidu.com/s/1qXDQs5u (android 5.1)
http://pan.baidu.com/s/1nvF86cp (android 6.0)

2.编译环境

系统:ubuntu 16.04 LTS
Java:openjdk-8-jdk

3.依赖库

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential  
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
sudo apt-get install libc6-dev-i386 
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

4.开始编译

(1) 修改 mydroid/art/build/Android.common_build.mk 文件,定位到75行,将下面的代码:

**ifneq ($(WITHOUT_HOST_CLANG),true)**
改为:
**ifneq ($(WITHOUT_HOST_CLANG),false)**

(2)在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

(3) 为了提高编译效率,设置编译器高速缓存(不然很容易提示内存不够之类的问题):

prebuilts/misc/linux-x86/ccache/ccache -M 50G

(4) 接着导入编译Android源码所需的环境变量和其它参数:

source build/envsetup.sh

(5)lunch 选择1

(6)make -j8 (j后面跟cpy个数,根据具体电脑实际情况设置)

然后就是漫长的等待。

备注:
如果编译过程中报出out of memory,please increase your java Xmx 错误时候:
可尝试执行以下操作,然后再次编译,即可成功:

1. 在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

2. 为了提高编译效率,设置编译器高速缓存。

prebuilts/misc/linux-x86/ccache/ccache -M 50G

3. 终端执行下面命令,提高Xmx的内存。

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"

4. 在android源码根目录执行以下命令重启jack-server

out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server

5. 若还有问题,可尝试修改 /root/.jack-server/config.properties 文件,将

jack.server.max-service=4

改成

jack.server.max-service=1

详细步骤可参考文章。http://blog.csdn.net/fuchaosz/article/details/51487585

你可能感兴趣的:(Android编译,Android开发)