背景
Android源代码作为公开源码,不读一下,总感觉Android学的不够(其实本来就不够),心里不踏实.这里就Nexus 7为基础,对Android 4.2源代码进行了编译,希望自己能够装X成功!
编译环境搭建
基础环境
- 操作系统:Ubuntu 14.04-64位(虚拟机)
- 运行硬件:nexus 7 I代(WIFI)
- 硬盘:60G
- 内存:1G
- 虚拟内存:2G
- 翻墙软件:月亮VPN:¥15/月 VPN333:¥18/月
- JDK:JAVA SE 6 下载
- SDK:23 下载
编译所需工具链
在Ubuntu 联网的情况下,通过下面命令安装所需的包:
sudo apt-get install gcc-multilib bison g++-multilib git gperf libxml2-utils make libncurses5-dev lib32ncurses5-dev libswitch-perl libgl1-mesa-glx:i386 libglapi-mesa:i386 libgl1-mesa-dev:i386 python-networkx zlib1g-dev:i386 zip schedtool xsltproc flex
因为Android SDK没有64位版本,64位的操作系统需安装如下支持包:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
通过
下载完,需要将JDK,SDK等软件添加到/etc/profile 中,以便添加到环境变量中.
源码下载
System层代码
Android 源代码除了谷歌官方提供的之外,还有一个重要的组织:CM,常年提供各种适配机型的源代码.这里就是使用CM的源代码.通过如下命令: //这里假设准备把源代码下载到:/home/xbb/android/
mkdir -p <源代码目录>
curl http://git-repo.googlecode.com/files/repo-1.12 > <源代码目录>/bin/repo
export PATH=${PATH}:<源代码目录>/bin/repo
repo -init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
同步完成,即完成了system层代码的下载.
HAL层源代码
命令:
<源代码目录>/ventor/cm/get-prebuilts
source <源代码目录>/build/envsetup/.sh
breakfast crepo
Linux内核源代码
上述同步即会下载内核代码,不过速度较慢,如果/device/中的内容下载玩,可以停止同步,手动下载相应的内核代码. 内核代码可以在CM官网,wiki中选择自己的Devices 来选择内核下载 Nexus 7 的内核下载地址为:下载
下载完成后,解压到:
<源代码目录>/kernel/asus/grouper/
如果不想解压,也可自己到相应的目录,使用git对相应的代码进行clone.
下载完代码,发现<源代码目录>/.repo中有大量缓冲文件,文件可删除,但是后续就不方便切换分支了. 代码总大小:约27G。源代码目录>
源码编译
你好
编译准备
编译前需要从目标设备上下载相应的配置文件.需要adb支持和硬件支持.命令:
<源代码目录>/device/asus/grouper/extract-files.sh
下载完即可编译:
export USE_CCACHE=1
croot
brunch grouper
编译成功后,可得到:
<源代码目录>/out/target/product/XXXX.zip //烧录文件
<源代码目录>/out/target/product/recovery.img //recovery 文件
其他
编译时长:约10小时 编译后总大小:45G
系统烧录
解锁
Nexus 7默认的bootloader是锁定的,需要解锁后才能进行正常的烧录,在正常开机状态下通过命令:
adb reboot bootloder //系统进入bootloader模式
也可在关机状态下,同时按下”开机键、音量+、音量-“,开机后即进入bootloader模式. 通过命令:
fastboot oem unlock //解锁硬件
期间可能会弹出删除数据的提示,点”是”继续.当显示 lock status=unlock 即为解锁成功!
刷入recovery
通过命令输入recovery:
fastboot flash recovery recovery.img //刷入recovery
刷入过程很快,刷完即可进入recovery模式.
刷入系统
开机重启,进入系统,因为unlock删除了数据,所以进入系统后,会有系统欢迎页面.完成后将编译好的XXXX.zip复制到手机里面.关机,开机时,同时按下”开机键、音量+、音量-“,进入recovery模式. 在recovery菜单中依次选择:
wipe data/factory reset -> YES
wipe cache partition -> YES
install zip -> choose zip from sdcard -> XXXX.zip路径
刷入系统完成即可重启,体验自己亲手制作的智能操作系统~