Free yourself from fixing complex.
eleven
  1. 操作系统准备。
  • 64位Linux系统,推荐使用Ubuntu 10.04LTS,可以使用虚拟机(VBox或者VMware).
  • 如果使用虚拟机来编译,那需要给它分配至少2GB的内存和双核处理器(性能越好编译速度越快,一般需要三到四个小时)
  • 给虚拟机至少25GB的硬盘空间,因为光Android源码就有6GB。
  • 这里是给Galaxy Nexus(I9250)编译Android 4.0系统,如果你使用的是其他机型,具体步骤或命令或选项会有所不同,但我相信不会太大。

======================

  1. 准备编译环境。

编译要以root身份运行,即命令提示符是井号 - "#",而非美元符 - “$”。运行:

 

[cc lang="bash"]sudo -i[/cc]

 

按提示输入系统登录密码。

 

添加Sun Java SDK的源:

 

[cc lang="bash"]add-apt-repository "deb http://archive.canonical.com/ lucid partner"[/cc]

 

更新: [cc lang="bash"]apt-get update[/cc]

 

安装java sdk: [cc lang="bash"]apt-get install sun-java6-jdk[/cc]

 

安装Python:

 

[cc lang="bash"]apt-get install python[/cc]

 

安装Git版本控制: [cc lang="bash"]apt-get install git-core[/cc]

 

安装依赖包:

 

[cc lang="bash"]apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils[/cc]

 

自此编译环境搭建完成。

 

======================

  1. 安装并初始化Repo(代码库?) [cc lang="bash"]mkdir ~/bin[/cc] [cc lang="bash"]PATH=~/bin:$PATH[/cc] [cc lang="bash"]curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo[/cc] [cc lang="bash"]chmod a+x ~/bin/repo[/cc]

创建一个用来存放源代码的目录并进入它: [cc lang="bash"]mkdir ICS\_SOURCE cd ICS\_SOURCE[/cc]

 

初始化Repo: [cc lang="bash"]repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3\_r1[/cc]

 

会要求输入姓名,电子邮件,最好属于真实有效的信息。

 

======================

  1. 下载(或曰同步)Android源代码,之前说了有6G多,所以耐心等待吧。

[cc lang="bash"]repo sync[/cc]

 

======================

  1. 获取专有二进制文件。

Android 4(Ice Cream Sandwich)已经不允许直接从源代码编译系统了,它要求一个与硬件系统相关的库才能编译。由此可见Google真的没法忍受Android的各种混乱了。

 

该库可以从这里下载:http://code.google.com/android/nexus/drivers.html

 

下载得到的是一个自解压的压缩包,chmod一下给它执行权限,运行得到一系列文件,运行:

 

[cc lang="bash"]sh extract-imgtech-maguro.sh[/cc]

 

======================

  1. 编译

如果你想修改一下最终编译出来的系统,那现在就可以去改动代码了(各种所谓刷机包制作者都是这么干的)。但是请注意一下语法规范,不然会导致编译失败,这里跳过这部分直接编译好了:

 

[cc lang="bash"]source build/envsetup.sh[/cc]

 

执行完成后,运行:

 

[cc lang="bash"]lunch[/cc]

 

会给出一些选项,如: 1. full-eng 2. full\_x86-eng . . . 8. full\_maguro-userdebug . . . 11. full\_panda-eng

 

这里编译的是用于Galaxy Nexus的系统Rom,直接输入数字8(Maguro指GSM版的NS),

 

[cc lang="bash"]8[/cc]

 

回车。

 

最后的make时刻到了:

 

[cc lang="bash"]make -j1[/cc]

 

这个生成的是用于fastboot刷机模式下的img包,或者使用:

 

[cc lang="bash"]make -j1 otapackage[/cc]

 

生成用于cwm的zip包。 编译的过程会很长很长很长,如果机器性能不好,可能需要一整夜或更长。总之编译是一件很需要耐心的事情。

2012-03-17