android 5.1.1 源码编译

1 Android 5.1.1源码编译

1.1 编译环境

本文编译环境采用ubuntu 16.04 + Nexus 5 + Android 5.1.1.注意对号入座.

1.2 配置环境

  1. 安装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
    
  2. 安装依赖包

    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 源码准备

  1. 下载源码 从官方同步太慢,建议直接从清华开源镜像站同步.
    • 下载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
      
  2. 下载驱动文件 前往 android驱动下载页面 下载对应驱动文件.本次编译选用设备为Nexus 5.编译版本号为LMY48M.把下载好的驱动包放入android根目录解压,并执行解压出来的三个脚本.注意脚本会提示你查看版权直接q,然后输入I ACCEPT.
  3. 检查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
    
  4. 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
    
  5. 编译 所有环境准备完毕之后,直接开编即可.注意lunch的时候要选择对应的手机型号.本文为aosp_hammerhead-userdebug.

    source build/envsetup.sh
    lunch
    make -j4