android 5.1.1 源码编译
1 Android 5.1.1源码编译
1.1 编译环境
本文编译环境采用ubuntu 16.04 + Nexus 5 + Android 5.1.1.注意对号入座.
1.2 配置环境
- 安装openjdk 7 - andoird 5.1.1编译需要依赖openjdk7,不能使用oracle的jdk. - 安装openjdk 7. - sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk 
- 安装依赖包 - sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip 
1.3 源码准备
- 下载源码
从官方同步太慢,建议直接从清华开源镜像站同步.
- 下载repo - mkdir ~/bin PATH=~/bin:$PATH curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo - 在.bashrc中添加export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'.然后source ~/.bashrc. 
- 同步特定版本的Android源码 - mkdir WORKING_DIRECTORY cd WORDING_DIRECTORY repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r14 repo sync- 在repo init的时候可以加上–depth=1,这样可以不用同步历史记录。在repo sync的时候可以加上–current-branch参数,只同步当前分支。 
 
- 下载驱动文件 前往 android驱动下载页面 下载对应驱动文件.本次编译选用设备为Nexus 5.编译版本号为LMY48M.把下载好的驱动包放入android根目录解压,并执行解压出来的三个脚本.注意脚本会提示你查看版权直接q,然后输入I ACCEPT.
- 检查make版本 执行make -version命令检查本机的make版本.如果make版本为4.x,需要进行降级处理.重新安装一份3.81或者3.82即可. - make -version GNU Make 3.82 Built for x86_64-unknown-linux-gnu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. #### make completed successfully #### - wget -o make.tar.gz http://ftp.gnu.org/gnu/make/make-3.81.tar.gz tar -xvzf make-3.81.tar.gz cd make-3.81 ./configure sudo make install
- fix build-android-from-sources-unsuppoerted-reloc android 5.1源码在ubuntu 16.04环境下编译存在一个由gcc版本引起的bug.需要手动修复.在源码根目录下执行如下命令即可. - cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld 
- 编译 所有环境准备完毕之后,直接开编即可.注意lunch的时候要选择对应的手机型号.本文为aosp_hammerhead-userdebug. - source build/envsetup.sh lunch make -j4