作者:秋叶随风 (ivan)        前面已经介绍过CyanogenMod是什么东西,以及环境搭建,android源码的大概框架。地址: http://blog.sina.com.cn/u/1697247850  ,所以这里就不再介绍。    首先你要确定你的设备,是否支持刷第三方recovery,或者是否支持fastboot模式,或者是否解锁bootloader,如果你的设备上述都不支持,那么你的机器可能就不能移植第三方系统。如果这样请跳过本文。当你确定你的设备有支持上述所讲的,那么恭喜你,你的设备可以移植第三方系统。      接下来我们开始干活了,工欲善其事,必先利其器。制作支持你手持设备的recovery。这里以中兴n760为例子介绍如何编译 支持中兴n760的recovery.      如果你已经下载了cm源码,请往下看,如果你没有下载源码,请按照前面发的教程下载源码.首先在device目录下面建立一个zte目录,这个目录是厂商的名字,例如中兴就是zte  我就建立zte,华为的话我就建立huawei,然后在zte 目录下面 建立一个目录为roamer  这个名字如何得到呢,在手机rom里面system/build.prop 目录下面搜索  ro.product.device 你会发现ro.product.device =roamer  所以我把设备名称定为 roamer目录都新建好了之后,我们来看一下 目录树

system 
|-------device  
          |-------zte 
                    |----roamer 
这个就是目录结构,我们在roamer目录下面,新建 
recovery_ui.c   这个文件里面是 手机各按键对应的  按键值,这样写入之后才能正确选择按键 
AndroidBoard.mk    连接地址到kernel  
AndroidProducts.mk  让编译工具连接到device_roamer.mk  
BoardConfig.mk   手持设备机器CPU  GPU型号参数配置 
device_roamer.mk    build.prop信息添加,私有库  xml文件  init文件拷贝  按机器设备device来写roamer是N760的设备型号 
kernel  官方提取,boot.img提取提取可以使用国外高手制作的厨房软件 
recovery.fstab  手机分区表 
system.prop  可有可无 
从官方rom提取,比如 n760  boot.img 里面提取的init.roamer.rc 文件 这个也是需要这些文件的. 
首先我们写AndroidBoard.mk  文件 

# 这一句的意思的 根目录就是  roamer目录
 AndroidProducts.mk  
  
 看文件名 
 
PRODUCT_MAKEFILES := \    $(LOCAL_DIR)/device_roamer.mk
 
 BoardConfig.mk  设备的配置文件 
 
USE_CAMERA_STUB := true # inherit from the proprietary version -include vendor/zte/roamer/BoardConfigVendor.mk TARGET_NO_BOOTLOADER := true TARGET_BOARD_PLATFORM := unknown TARGET_CPU_ABI := armeabi TARGET_BOOTLOADER_BOARD_NAME :=roamer  //此处一版为device # 此处为打包 boot.img 的信息,可以通过厨房 查看到,我模糊的记得用厨房解压boot.img的时候的选项应该是  打开厨房,选择0高级,然后选择 20,再选择  S  就能看到下面这三个信息了
 
 
   
    size  
     
   erasesize  
     
   name 
    # mtd0: 00600000 00020000 "recovery" 
    # mtd1: 00400000 00020000 "boot" 
    # mtd2: 00180000 00020000 "splash" 
    # mtd3: 00080000 00020000 "misc" 
    # mtd4: 03980000 00020000 "cache" 
    # mtd5: 0dc00000 00020000 "system" 
    # mtd6: 0a280000 00020000 "userdata" 
    # mtd7: 00100000 00020000 "oem" 
    # mtd8: 00180000 00020000 "persist" 
    BOARD_BOOTIMAGE_PARTITION_SIZE  
     
     
     
   :=0x00500000 
    BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00600000 
    BOARD_SYSTEMIMAGE_PARTITION_SIZE  
     
   := 0x0dc00000 
    BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0a280000 
    BOARD_FLASH_BLOCK_SIZE := 131072 
    # 内核路径 
    TARGET_PREBUILT_KERNEL := device/zte/roamer/kernel 
    #一般情况下,手机没有实体返回键,建议选择这一项,有的手机触摸返回键在recovery下面不能使用的,比如小米手机。 
    BOARD_HAS_NO_SELECT_BUTTON := true# 编译recovery 指定 keymap 文件,看参数名称就知道了,不懂的可以google翻译 
  
 
 device_roamer.mk这个是编译recovery的时候我写的,有些东西可以不要,以后编译rom的时候需要删除重写的 
 

    #语言配置文件 
    $(call inherit-product,$(SRC_TARGET_DIR)/product/languages_full.mk) 
    # The gps config appropriate for thisdevice  
     
   gps配置文件 
    $(call inherit-product, device/common/gps/gps_as_supl.mk) 
    # vendor 私有库配置文件 
    $(call inherit-product-if-exists,vendor/zte/roamer/roamer-vendor.mk) 
    #有些你需要对应用 或者 framework 进行初始化设定值的地方 
    DEVICE_PACKAGE_OVERLAYS += device/zte/roamer/overlay 
    #kernel路径选择 
    ifeq ($(TARGET_PREBUILT_KERNEL),) 
  
LOCAL_KERNEL :=device/zte/roamer/kernelelseLOCAL_KERNEL :=$(TARGET_PREBUILT_KERNEL)endifPRODUCT_COPY_FILES += \  $(LOCAL_KERNEL):kernel$(call inherit-product,build/target/product/full.mk)PRODUCT_BUILD_PROP_OVERRIDES +=BUILD_UTC_DATE=0PRODUCT_NAME :=full_roamerPRODUCT_DEVICE := roamer

recovery.fastab 官方recovery.img提取 自己想个办法,我用厨房提取的

用终端输入   .build/envsetup.sh   然后输入lunch  选择你的设备

make recoveryimage  就可以编译了

编译结束之后,到out/target/product/roamer目录下面可以发现 recovery.img这个文件

使用fastboot 工具到fastboot 模式下面刷写,刷写命令为 fastboot flash recoveryrecovery.img

教程到此结束,有关如何进入fastboot模式 recovery模式,还有fastboot工具使用,请google 或者baidu

谢谢