为了编译安卓源码,首先需要一个Linux,本次采用Ubuntu Kylin14.04,内核版本3.13。装在四核、4G内存、1T硬盘的虚拟机上
查看内核版本号:
$uname -all
清华镜像地址
清华镜像站的速度还是比较快的,地址:
git://aosp.tuna.tsinghua.edu.cn/android/
使用浏览器访问:
http://aosp.tuna.tsinghua.edu.cn/android/
下载 repo
$git clone git://aosp.tuna.tsinghua.edu.cn/Android/git-repo.git/
修改repo
$vi /git-repo.git/repo
google的地址
REPO_URL = ‘https://gerrit.googlesource.com/git-repo’
改为清华大学的地址
REPO_URL = ‘git://aosp.tuna.tsinghua.edu.cn/android/git-repo’
下载 manifest
google 的地址
$ repo init -u https://android.googlesource.com/platform/manifest
改为清华大学的地址
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
如果需要设置版本,加入参数-b 安卓源码版本号即可。
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
同步源码
$repo sync [-j4]
后面-j4表示4个线程进行下载,清华镜像允许最多4线程下载,不要超过4个。
如果中间发现断掉了或者报错了,不要紧张,重新运行一下。源码大小
Set up environment(设置环境变量)
Initialize the environment with the envsetup.sh script. Note that replacing source with . (a single dot) saves a few characters, and the short form is more commonly used in
documentation.
$ source build/envsetup.sh or $ . build/envsetup.sh
Choose a Target(选择平台编译)
Choose which target to build with lunch. The exact configuration can be passed as an argument. For example, the following command:$ lunch aosp_arm-eng
refers to a complete build for the emulator, with all debugging enabled.
If run with no arguments lunch will prompt you to choose a target from the menu.
All build targets take the form BUILD-BUILDTYPE, where the BUILD is a codename referring to the particular feature combination.
The BUILDTYPE is one of the following:
Build the code(构建代码)
Build everything with make. GNU make can handle parallel tasks with a -jN argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of
hardware threads on the computer being used for the build. For example, on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made
with commands between make -j16 and make -j32.
$ make -j4
最后运行我们刚刚编译出来的android系统Run It!
You can either run your build on an emulator or flash it on a device. Please note that you have already selected your build target with lunch, and it is unlikely at best to
run on a different target than it was built for.
Flash a Device(烧进一个真实的设备)
To flash a device, you will need to use fastboot, which should be included in your path after a successful build. Place the device in fastboot mode either manually by holding
the appropriate key combination at boot, or from the shell with
$ adb reboot bootloader
Once the device is in fastboot mode, run
$ fastboot flashall -w
The -w option wipes the /data partition on the device; this is useful for your first time flashing a particular device but is otherwise unnecessary.
For more information about building for and running on actual hardware, see Running Builds.
Emulate an Android Device(模拟一个安卓设备)
The emulator is added to your path automatically by the build process. To run the emulator, type
emulator模拟器能成功运行起来的前提是:成功将emulator所在的目录和 android编译完之后输出目录out下面的host和target目录都添加到了你的PATH环境变量了。
并且执行source build/envsetup.sh ;lunch sdk-eng;这2个命令。
$ emulator