ubuntu 16.04TLS 编译android5.1.1源码

    搭建编译环境

 1。安装openjdk7

  ubuntu 15.04及之后的版本的在线安装库中只支持openjdk8和openjkd9的安装,因此想要安装openjdk7需要先设置ppa

  sudo add-apt-repository ppa:openjdk-r/ppa

  sudo apt-get  update

  sudo apt-get  install openjdk-7-jdk

如果需要编译不同版本的android系统,可能需要不同版本的jdk,使用如下命令切换jdk版本:

  sudo update-alternatives --config java

  sudo update-alternatives --config javac

敲入命令后会提示你选择jdk版本,按照提示选择需要的版本就行了


  添加依赖

  sudo apt-get install git gnupg flex bison gperf build-essential

  sudo apt-get install zip curl libc6-dev libncurses5-dev x11proto-core-dev

  sudo apt-get install libx11-dev:i386 libreadline6-dev:i386

  sudo apt-get install g++-multilib tofrodos lib32ncurses5-dev lib32ncursesw5-dev

  sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

  sudo apt-get install lib32z1 dos2unix gcc g++

  安装git

  sudo apt-get install git
  git config --global user.email "[email protected]"
  git config --global user.name "test"


  源码下载

  由于国内无法直接访问谷歌,我们可以采用国内的镜像源进行下载 科大镜像源 或 清华大学镜像源 ,或者使用这个版本来编译 CyanogenMod 。

  下载repo工具

   mkdir ~/bin
   PATH=~/bin:$PATH
   curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
   ## 如果上述url不可访问,可以使用下面的:
   ## curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
   chmod a+x ~/bin/repo

  创建工作目录

  mkdir WORKSPACE
  cd WORKSPAC

   初始化仓库
   repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
   ## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
   ## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo

   不带参数的manifest命令用于获取master上的最新代码,但是可以通过-b参数指定获取某个特定的版本,例如想过去android_5.1.1_r1版本的话,敲入如下命令 Android 版本列表
  
   repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android_5.1.1_r1

  开始同步代码到本地

  repo sync

   同步代码大约需要4 5个小时

  添加驱动 

  在代码完全同步之后,实际时缺少vendor目录的,是没有相应的驱动,编译出的镜像在机器(模拟器和真机)上运行时会停在启动界面,下载对应版本的驱动

https://developers.google.com/android/drivers#hammerheadmmb29k,实际是三个shell 脚本,将shell脚本放在源码根目录下,执行shell脚本后,会在根目录下

生成vendor目录,驱动文件就在该目录下,例如脚本文件名为 broadcom.sh ,则敲入命令 ./broadcom.sh 执行脚本

开始编译 进入到 WORKSPACE 目录 初始化编译环境,命令如下: source build/envsetup.sh 或 . build/envsetup.sh 选择编译目标 敲入lunch命令,会出现如下提示
Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_mips-eng 4. aosp_mips64-eng 5. aosp_x86-eng 6. aosp_x86_64-eng 7. aosp_deb-userdebug 8. aosp_flo-userdebug 9. full_fugu-userdebug 10. aosp_fugu-userdebug 11. mini_emulator_arm64-userdebug 12. m_e_arm-userdebug 13. mini_emulator_mips-userdebug 14. mini_emulator_x86_64-userdebug 15. mini_emulator_x86-userdebug 16. aosp_flounder-userdebug 17. aosp_angler-userdebug 18. aosp_bullhead-userdebug 19. aosp_hammerhead-userdebug 20. aosp_hammerhead_fp-userdebug 21. aosp_shamu-userdebug 
Which would you like? [aosp_arm-eng] 19 
   选择对应的数字编号即可

  开始编译

   make -j8

  执行make -j8, 8为同时编译的线程数,一般Google推荐执行源码编译的线程数 = CPU核心数x 2 + 2,比如4核,就推荐10线程编译,执行make –j10。】 
  关于cpu个数,可以用下面命令查看:

  cat /proc/cpuinfo


  当看到下面一堆输出时,已经编译完成了:
   
  
 Creating filesystem with parameters:
    Size: 1073741824
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8192
    Inode size: 256
    Journal blocks: 4096
    Label: 
    Blocks: 262144
    Block groups: 8
    Reserved block group size: 63
 Created filesystem with 1411/65536 inodes and 81288/262144 blocks
 Install system fs image: out/target/product/hammerhead/system.img
 out/target/product/hammerhead/system.img+out/target/product/hammerhead/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=1096212480 blocksize=135168 total=317825554 reserve=11083776

 #### make completed successfully (01:18:47 (hh:mm:ss)) ####

编译成功之后我们就要把源码弄成可以在AndroidStudio下查看的项目(只是为了方便我们学习源码):

生成ide工具文件
mmm development/tools/idegen/

mmm 命令是用来编译指定目录

生成Android Studio配置文件,主要是生成android.iws, android.ipr, android.iml,这三个文件是Android Studio项目的关键文件,主要就是列出项目的模块组成,依赖关系,目录结构。


  sh ./development/tools/idegen/idegen.sh

打开Android Studio,File->Open->源码根目录android.ipr,Android会自动导入工程所有代码




 

你可能感兴趣的:(ubuntu 16.04TLS 编译android5.1.1源码)