搭建编译环境
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)) ####
sh ./development/tools/idegen/idegen.sh