- 操作系统准备。
- 64位Linux系统,推荐使用Ubuntu 10.04LTS,可以使用虚拟机(VBox或者VMware).
- 如果使用虚拟机来编译,那需要给它分配至少2GB的内存和双核处理器(性能越好编译速度越快,一般需要三到四个小时)
- 给虚拟机至少25GB的硬盘空间,因为光Android源码就有6GB。
- 这里是给Galaxy Nexus(I9250)编译Android 4.0系统,如果你使用的是其他机型,具体步骤或命令或选项会有所不同,但我相信不会太大。
======================
- 准备编译环境。
编译要以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]
自此编译环境搭建完成。
======================
- 安装并初始化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]
会要求输入姓名,电子邮件,最好属于真实有效的信息。
======================
- 下载(或曰同步)Android源代码,之前说了有6G多,所以耐心等待吧。
[cc lang="bash"]repo sync[/cc]
======================
- 获取专有二进制文件。
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]
======================
- 编译
如果你想修改一下最终编译出来的系统,那现在就可以去改动代码了(各种所谓刷机包制作者都是这么干的)。但是请注意一下语法规范,不然会导致编译失败,这里跳过这部分直接编译好了:
[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包。 编译的过程会很长很长很长,如果机器性能不好,可能需要一整夜或更长。总之编译是一件很需要耐心的事情。