如何编译CWM Recovery
原文链接:http://forum.xda-developers.com/showthread.php?t=1866545
你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章。
1,
安装所需要的包
2,
建立编译的环境,并同步CWM所需的源码,CyanogenMod源码中附带CWM源码
CWM 5 - Gingerbread
CWM 6 - Jellybean
3,
下面我们进入真正的编译阶段,确保你已经使用“repo sync ”命令同步了最新的源码
进入源码的目录
放出以下命令:
make -j4 otatools
3.5,
如果你的机型不被CM10官方支持,请执行这一步
在你的手机终端上执行以下命令,
dump_image boot /sdcard/boot.img
这将boot镜像导出到你手机的sdcard,复制该镜像至你的home目录下
为一款新设备编译android源码,需要建立相应的配置文件和makefile文件,这通常比较麻烦,如果仅仅编译recovery镜像,会容易的多。在android源码根目录下(假设已运行envsetup.sh),运行以下命令(使用适当的名称取代命令中的名称)
build/tools/device/mkvendor.sh device_manufacturer_name device_name /your/path/to/the/boot.img
例如,你拥有Samsung Galaxy Ace这款设备,你应该使用以下这条命令
build/tools/device/mkvendor.sh Samsung cooper ~/boot.img
Please note that Cooper is the device name. Only use "~/boot.img" if you have the boot image in your home directory. Or else please specify the correct path.
如果所有都工作正常,你将看到"Done!"这样的确认信息。mkvendor.sh脚本也将在你的android源码树中创建以下目录:
manufacturer_name/device_name
4,
现在你已经拥有相关的配置文件
在源码目录下,在terminal终端下键入以下命令
. build/envsetup.sh
这一步将为你建立编译环境
现在使用这条命令
lunch full_device_name-eng
这将为你的设备建立起build system。用文件管理器或IDE打开目录,你应该拥有以下文件: AndroidBoard.mk, AndroidProducts.mk, BoardConfig.mk, device_.mk, kernel, system.prop, recovery.fstab, 和 vendorsetup.sh
对你感兴趣的应该是recovery.fstab和kernel这两个文件,kernel这个文件是你之前从boot.img文件中提取出的。recovery.fstab将适用于大部分拥有 mtd, emmc,或者其他分区的设备。如果没有,recovery.fstab将需要优化以支持加载这些点。例如 /sdcard被加载至/dev/block/mmcblk1p1,
你需要将下面这段加入到你的BoardConfig.mk文件中
/sdcard vfat /dev/block/mmcblk1p1
一旦recovery.fstab已经适当的装载,你可以开始下一步了
5,
现在,我们开始编译Recovery
make -j4 recoveryimage
这个命令用于编译recovery镜像
你能使用这个命令
make -j4 recoveryzip
用于建立一个临时的recovery.zip刷机包在你真实的设备上测试
你编译好的recovery可以在"your_source_directory/OUT/target/product/device/recovery.img"目录下找到。而.zip刷机包可以在相同目录下的utilities文件夹下找到。
如果各项测试正常,就可以有一个成功的recovery
一旦你编译通过了recovery,通知"koush",在Github上,他就能根据你的编译文件发放官方版的CWM Recovery,并使Rom Manager提供相应的支持。
小贴士:
如果你想编译CWM6,使用以下命令同步jellybean分支源码
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
repo sync
如果你改变了BoardConfig.mk文件,在编译期间运行"make clobber",否则你做的更改就不会生效。
如果你在32位系统上编译CWM6,你需要同步以上源码,更多信息请参考readme。