BruceFan's Blog

Stay hungry, stay foolish

0%

编译Android6.0.1源码,烧录到nexus5真机上

1.git配置

1
2
3
$ sudo apt-get install git 
$ git config --global user.email "fanrong1992@gmail.com"
$ git config --global user.name "fanrong1992"

2.下载repo

1
2
3
4
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

3.下载源码,Android所有版本和支持的手机型号在官网上有:

1
2
3
4
$ mkdir Android6.0.1_r20
$ cd Android6.0.1_r20
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r20
$ repo sync

4.安装编译环境

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo add-apt-repository ppa:openjdk-r/ppa    //更新下载链接
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
$ sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
$ sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
$ sudo apt-get install libc6-dev-i386
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
$ sudo apt-get install lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

5.编译源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ source build/envsetup.sh
$ lunch
You're building on Linux

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 # 我选的是这个,因为nexus5是hammerhead
20. aosp_hammerhead_fp-userdebug
21. aosp_shamu-userdebug
$ make -j8

烧录到真机

1.下载nexus5驱动(需要梯子),还是在刚才官网手机版本那个页面,有每个版本的build版本,比如Android6.0.1_r20是MMB29X,找到手机型号和build版本对应的驱动下载,否则无法继续进行。
三个压缩文件,解压出三个sh文件,放到源代码根目录。执行这三个sh文件,自动提取出驱动到vendor目录中。
2.再次编译:

1
2
3
$ . build/envsetup.sh
$ lunch 19
$ make -j8

3.切换到root:

1
2
3
4
5
6
$ sudo -s
# export ANDROID_PRODUCT_OUT=/home/fanrong/Computer/Android6.0.1_r20/out/target/product/hammerhead
// 将adb和fastboot目录添加到PATH
# PATH=/home/fanrong/Computer/Android6.0.1-r20/out/host/linux-x86/bin:$PATH
# adb reboot bootloader
# fastboot flashall -w

执行完fastboot手机会自动重新启动,就能用上自己编译的Android系统了。