搭建编译环境
安装Java
去Oracle官网下载Java6 JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
我下载的版本是Java 6u45。文件名为 jdk-6u45-linux-x64.bin
安装可以制作 Sun Java Debian 包的程序包
# apt-get install java-package java-common
制作相应的 Debain Java6 程序包,使用普通用户身份
$ make-jpkg jdk-6u45-linux-x64.bin
安装Java6
$ su root # dpkg -i oracle-j2sdk1.6_1.6.0+update45_amd64.deb
默认使用 Sun Java6 作为默认 Java
# update-java-alternatives -s j2sdk1.6-oracle
安装必要安装包
# 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 lib32readline-gplv2-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils xsltproc
lib32readline5-dev 包被 lib32readline-gplv2-dev 包替换
另外,要成功编译CM10.1还要安装 schedtool
# apt-get install schedtool
安装链接
# ln -s /usr/lib/i386-linux-gnu/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
添加 udev 规则
创建 /etc/udev/rules.d/51-android.rules,内容如下
# adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>" # adb protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>" # fastboot protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>" # adb protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>" # fastboot protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"
替换 <username> 为你用户名
# sed -i 's/<username>/tinnnysu/g' /etc/udev/rules.d/51-android.rules
这里修改的是我的用户名,只需将 tinnnysu 替换为你的用户名
安装 repo
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
抓取源文件,如果你老断线的话,就用vpn吧,或者谷歌下解决办法
$ mkdir cm10.1 $ cd cm10.1 $ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
中间询问你的姓名和邮箱,如实填写就好了,下面的选项就默认。完成后
$ repo sync
完成后,安装预编译文件
$ cd vendor/cm $ ./get-prebuilts
安装相关内核源文件以及专利文件
$ cd ~/cm10.1 $ source build/envsetup.sh $ brunch
然后选择
cm_toro-userdebug
然后Build系统会自动下载相关内核源文件,等的时间比较久,要耐心。网络如果老断,就上vpn吧。
安装二进制文件,如果你不安装的话,也能编译通过但是可能在启动的时候什么都不显示,因为缺少必要的文件
https://developers.google.com/android/nexus/drivers#torojdq39
下载到CM源文件的根目录,依次执行下载的自解压缩文件,注意接受许可证
$ ./extract-broadcom-toro.sh $ ./extract-imgtec-toro.sh $ ./extract-invensense-toro.sh $ ./extract-nxp-toro.sh $ ./extract-samsung-toro.sh $ ./extract-widevine-toro.sh
编译CM10.1
$ cd ~/cm10.1 $ source build/envsetup.sh $ brunch
然后选择
cm_toro-userdebug
等几个小时,编译完成,如果你有toro的话,刷上试试吧,不过现在在国内是搜不到信号的,需要安装 i515 3g 补丁,在下一片文章中我会介绍把3g补丁编译进系统的方法。
编译后的刷机包在源文件目录下的/out/target/product/toro/cm-10.1-20130618-UNOFFICIAL-toro.zip,可能日期不一样。