android本身自带了bootloader,这部分不是一般的工具能够烧录的,市面上的所谓定制rom,刷r

om一般都是基于bootloader已经启动了,同时运行了recovery 这个程序以后,然后解压缩/sdcard/

update.zip这个压缩包的。


   所以,刷rom的时候,android手机的基本N多驱动都已经运行好了,屏幕能亮,usb能够通信,

flash能够读取,sdcard能够读取还有n多的看不见的驱动串口,键盘,touchpanel这些也都是调试好

了,所以需要有一个基本的概念是android刷所谓的rom其实是建立在bootloader已经完全加载好了的

前提下的,而本身bootloader这部分固件的download就不是用那些刷机软件通过usb来down进去了。


  闲言少叙,书归正题。


  首先下载CyanogenMod,关于ubuntu里面的环境如何搭建,这里就不说了,大家可以看我前面的

博客,里面有较详细的介绍。



1.安装repo

$mkdir bin
//下载的repo脚本拷贝本地bin文件夹下
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
$alias repo="~/bin/repo"
//这里我用特意用别名,大家也可以按常规方法把repo的路径添加到PATH中


这里用原来的google的好像不行,需要用我附件里面的那个repo,具体原因尚未查询

如果用原来的话,会报错,见下面的博客

http://sunzeduo.blog.51cto.com/2758509/1348298



2 下载CyanogenMod源码

//从用户根目录下开始
//创建CyanogenMod文件夹来放置后面所有的代码
$mkdir CyanogenMod
//获取gingerbread的分支源代码
$repo init -u git://github.com/CyanogenMod/android.git -b gingerbread  
//同步服务器代码到本地,-j16据网友反应是多开网络连接,从而能提高下载速度

$repo sync -j16


   经过漫长的下载过程以后,下载完成,这个时候在代码的 device文件夹下并没有具体设备的驱动包,这个时候先不要着急编译,即便编译完成也没有办法下载到手机里面的。笔者的测试手机是 三

星 nexus S系列手机,对应的驱动是android_device_samsung_crespo,关于如何找到自己对应的手机的驱动包,寻找方法是


    打开这个网页

http://wiki.cyanogenmod.org/w/Devices#vendor=;


    里面有n多的设备,如果你的手机能在这里找到,ok,接下来的移植和编译将十分顺利,如果没有找到,那么就找个这个里面有的手机得了 呵呵

    通过这个网页,找到相应手机驱动的下载目录 crespo 这个驱动是在

https://github.com/cyanogenmod/android_device_samsung_crespo

   这个网页里面,不用git了 直接点击右下边的zip包下载下载zip即可,然后拷贝到源代码的 device目录下,修改一下压缩包的名字为crespo,如下图


CyanogenMod×××和编译以及简单修改_源码下载


ok 高亮的地方是刚才加的驱动。


    打开crepso这个文件夹,里面有一个很重要的extract-files.sh 这个解压缩脚本,运行这个

脚本,命令如下


./extract-files.sh

CyanogenMod×××和编译以及简单修改_ubuntu_02


但是在执行这个命令之前,需要做的是,将你手机上的驱动库先拷贝到 system目录下,拷贝方法很简单,将手机root以后,使用


adb pull /system/vendor 拉出来,然后放在system目录下即可。

如下图:


CyanogenMod×××和编译以及简单修改_源码下载_03


ok,然后再执行


$cd ~/CyanogenMod/vendor/cyanogen  
$./get-rommanager
$./extract-google-files
//复制编译脚本文件到CyanogenMod目录下,后面编译整个系统用的就是这个文件

$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_crespo.mk  ~/CyanogenMod/buildspec.mk


这一串命令


接着不要客气,继续执行

//初始化脚本,这个是后面的重要基础步骤
$source build/envsetup.sh
//选择编译的产品
//这个命令需要一小会儿时间,但是又没提示,耐性等待一下
$lunch cyanogen_crespo-eng
//开始编译
$make -j4 CYANOGEN_WITH_GOOGLE=true otapackage


这一串命令


这个过程也是相当的漫长,还好一般情况下我们只是第一次需要项目整个编译,后面只需要编译某个模块。

等编译好了,会自动在 out/target/product/crespo/ 目录下面生成可以升级的rom包,如下图


CyanogenMod×××和编译以及简单修改_ubuntu_04


我编译的时候,其实在编译完成的时候就自动生成了那个zip文件了,并且代码本身提供了生成zip

包的打包工具


./vendor/cyanogen/tools/squisher


环境设置好以后,直接使用  ./vendor/cyanogen/tools/squisher 这个命令也可以生成zip包

的。


rom包生成以后,下一步就是将包烧到手机里面了,也很简单


adb push  cyanogen_crespo-ota-eng.root.zip  /sdcard/update.zip

主要recovery 程序也就是刷rom的程序,是需要解压缩update.zip压缩包的,并且是放在sdcard上

所以我们在往手机卡里面放的时候,直接将名字修改成update.zip即可


开机以bootloader 模式开始,按下音量上键的同时再按下电源键,有的手机还需要按下home键,这个自己到时候多试试即可


bootloader下载的模式如下图:

图片我是从网上找的一个,能够反应我表达的意思,

CyanogenMod×××和编译以及简单修改_源码下载_05



有些recovery 是中文的,那是经过汉化或者修改了,总之选择 安装update.zip 升级包即可

选择后会出现,下面的图片,表示正在刷机过程中


CyanogenMod×××和编译以及简单修改_源码下载_06


完成后重启机器,即可搞定了。。