资源描述
如何移植ROM
只试用于MTK芯片手机!
在这篇教程中,你将会学会同平台CPU移植,也将会跨平台移植。
试用于芯片
MT6589 to MT6577移植
MT6582 to MT6572移植
MT6577 to MT6575移植
只能ICS移植ICS 或者JB to JB
可能4.1移植4.2也行,只是可能。
不需要安卓源码
不需要内核源码
不需要安卓厨房
不需要Linux环境
只需要:
* 大脑的思考
* 耐心去做的决心
* Windows XP/7/8
* 7-Zip解压缩工具
* Notepad++文本编辑器
* Bootimg 解包打包工具
* 官方ROM和要移植的ROM
准备好了,现在开始...
同平台移植 ( 例如: MT6572 移植MT6572)
*把官方ROM和要移植的ROM解压。
* 从你的官方系统中提取以下文件替换到你想要移植的ROM中,注意,替换整个文件夹时先删除要移植的包中相应文件夹,不要直接合并。
需要替换的文件或文件夹有:
*system/vendor/lib
*system/usr/keychars和keylayout
*system/lib/modules
*system/lib/hw
*system/lib/libncurses.so
*system/etc/firmware
*system/etc/vold.fstab
*system/etc/vold.fstab.nand
*system/etc/bluetooth
当出现一下bug时,替换以下文件...
*system/etc/permissions
*system/etc/security
*system/etc/audio
*system/etc/wifi
*system/lib/drm
*system/lib/egl
*system/lib/soundfx
* 然后把官方的boot.img替换到要移植的包,前提是你的官方包boot和要移植的包中boot的启动项要相同,如果你移植像乐蛙ROM这样的,还需修改启动项。因为乐蛙还导入了lewa-framwork.jar,下文有说明,建议移植任何ROM都修改一下boot中的启动项,下文有讲怎么修改。
*接下来用notepad++打开要移植的ROM中的 META-INF/google/android/updater-script这个刷机脚本
* 找到这段:
format(".......
只需要修mmcblk0p.. 为你官方包的分区
* 依然像上面那样把下面的修改为你官方包的对应分区,可以参考官方包中的刷机脚本改
mount("...
例如:
这是要移植的ROM中的刷机脚本的部分内容:
format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
这是官方包中刷机脚本的部分内容:
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
那么,你只需把要移植的ROM中的刷机脚本中的mmcblk0p5改为mmcblk0p3
修改好了,要移植的ROM中的刷机脚本那部分内容应该像这样:
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
不要直接把官方ROM中刷机脚本的整个内容替换到要移植的ROM的脚本中去!
* 现在基本完成,你要移植的ROM基本有下面这几个文件,这是最基本的:
-META-INF
-system
-boot.img
* 现在用7zip把上面三个打包成zip格式的压缩包。
* 压缩文件时,应该这样配置:
压缩格式: ZIP
压缩方式: 正常
* 现在,把制作好的zip包放入SD卡,然后进入第三方Recovery模式
* 选择清空数据,恢复出厂设置,完成后,再选择清空cache缓存。
*接下来,选择“从SD卡安装zip包,选择那个包,确定,然后等待刷机完成”
接下来,是跨平台移植 ( 例如: MT6582 移植 MT6572 )
请仔细看接下来的教程
* 官方包中提取以下文件或文件夹替换到要移植的包中
*system/vendor/lib
*system/usr/keycharts和keylayout
*system/lib/modules
*system/lib/hw
*system/lib/libncurses.so
*system/etc/firmware
*system/etc/vold.fstab
*system/etc/vold.fstab.nand
*system/etc/bluetooth
* 接下来用notepad++打开要移植包中的build.prop,找到以下内容:
ro.mediatek.platform=MT65xx
把这里的MT65xx改为你的手机的cpu型号。
例如我的手机cpu型号为MT6572,那么就改为:
ro.mediatek.platform=MT6572
*然后用notepad++打开要移植包中的刷机脚本
* 在"set_perm"这段的结束地方添加这句:
set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt65xx.so");
[把这里的mt65xx改为你的cpu型号]
例如,我的cpu是MT6572,那么就这样改:
set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt6572.so");
*现在,用boot解包工具把官方boot和要移植的boot解包。
*然后打开要移植的boot解包后的boot.img-ramdisk,然后从中复制所有文件到 你官方boot中的boot.img-ramdisk 文件夹中。如果文件存在就跳过,相当于把要移植包boot中多余的文件复制到官方中去
*然后用notepad++打开官方boot.img-ramdisk文件夹 中的init.rc
*找到这句,并修改cpu型号为你的cpu型号
#Create Chip Property
on early_property:ro.hardware=mt6582
setprop ro.mtk.hardware mt6589
on early_property:ro.hardware=mt6589
setprop ro.mtk.hardware mt6589
例如,我的cpu是MT6572,那么就这样改 :
#Create Chip Property
on early_property:ro.hardware=mt6582
setprop ro.mtk.hardware mt6572
on early_property:ro.hardware=mt6589
setprop ro.mtk.hardware mt6572
*接下来,修改default.prop,参照要移植的boot改。
* 然后把修改好的官方boot打包,并把打包的boot.img和要移植包中的其他两个修改好的文件夹压缩,方法和上面一样。
移植Lewa OS5 ROM:
*官方包提取这些文件或文件夹到LeWa OS5 ROM中
*system/vendor/lib
*system/usr/keylayout和keycharts
*system/lib/modules
*system/lib/hw
*system/etc/firmware
*system/etc/vold.fstab
*system/etc/vold.fstab.nand
*system/etc/bluetooth
* 然后解包官方的boot.img
* 打开init.rc
* 找到这几句,可能各个机型以下内容不同,有的机型只有一个启动项,这只是个示范。
on early_property:ro.build.type=user
write /proc/bootprof "INIT: user build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar
on early_property:ro.build.type=userdebug
write /proc/bootprof "INIT: userdebug build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar
on early_property:ro.build.type=eng
write /proc/bootprof "INIT: eng build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar:/system/framework/emma.jar
*添加以下这句到每三行的最后,注意/前面有个冒号!
:/system/framework/lewa-framwork.jar
例如:
on early_property:ro.build.type=user
write /proc/bootprof "INIT: user build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar:/system/framework/lewa-framework.jar
on early_property:ro.build.type=userdebug
write /proc/bootprof "INIT: userdebug build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar
on early_property:ro.build.type=eng
write /proc/bootprof "INIT: eng build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar:/system/framework/emma.jar:/system/framework/lewa-framework.jar
* 修改好了保存,然后用bootimg打包,把打包好的boot.img与之前修改好的那几个文件夹一起打包成zip,方法和之前一样。
移植MIUI ROM
*官方包提取这些文件或文件夹到MIUI ROM中
*system/vendor/lib
*system/usr/keylayout和keycharts
*system/lib/modules
*system/lib/hw
*system/etc/firmware
*system/etc/vold.fstab
*system/etc/vold.fstab.nand
*system/etc/bluetooth
* 然后解包官方的boot.img
* 打开init.rc
* 找到这几句,可能各个机型以下内容不同,有的机型只有一个启动项,这只是个示范。
on early_property:ro.build.type=user
write /proc/bootprof "INIT: user build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar
on early_property:ro.build.type=userdebug
write /proc/bootprof "INIT: userdebug build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar
on early_property:ro.build.type=eng
write /proc/bootprof "INIT: eng build setting"
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/secondary-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-op.jar:/system/framework/emma.jar
*和移植乐蛙一样,在每行最后添加以下内容,/前面有个冒号!
:/system/framework/miui-framework.jar
* 然后打包,接下来就和之前一样
尽情享受你的ROM吧!
修复bug
短信,电话,设置,通讯录强行关闭,修复方法:
反编译官方和要移植的包中framework.jar
* 找到:
\smali\com\mediatek
*替换官方所有的这个文件夹的内容到移植的ROM中
* 然后,找到
\smali\com\android\server
* 替换官方所有的这个文件夹的内容到移植的ROM中
* 修改好后,回编译要移植的ROM的framework.jar,然后替换回去。
* 修复其他bug
1、无信号、未知基带、无SIM卡如何修复?
替换以下文件为官方:
\system\bin\ccci_fsd
\system\bin\ccci_mdinit、
\system\bin\gsm0710muxd、
\system\bin\netd、
\system\bin\netdiag
\system\bin\p2p_supplicant
\system\bin\wpa_supplicant
\system\lib/mtk-ril.so
2、相机问题,官方提取以下文件替换:
\system\lib/hw/camera.default.so
\system\lib\libcamalgo.so
\system\lib\libmhaldrv.so
\system\lib\libcamera_client.so
\system\lib\libcameracustom.so
\system\lib\libcameraprofile.so
\system\lib\libcameraservice.so
\system\lib\libmhal***.so(搜索libmhal有多少换多少)
3、GPS问题,替换:
/system/xbin/libmnlp
4、蓝牙问题,替换:
/system/lib/libbluetooth_mtk.so
/system/lib/libbluetoothem_mtk.so
5、音频问题,替换:
\system\lib\libaudio.a2dp.default.so
\system\lib\libaudio.primary.default.so
\system\lib\libaudiocompensationfilter.so
\system\lib\libaudiocustparam.so
\system\lib\libaudioeffect_jni.so
\system\lib\libaudioflinger.so
\system\lib\libaudiosetting.so
6、收音机问题,替换:
\system\lib\libfmar1000.so
\system\lib\libfmcust.so
\system\lib\libfmjni.so
\system\lib\libfmmt6616.so
\system\lib\libfmmt6620.so
\system\lib\libfmmt6626.so
\system\lib\libfmmt6628.so
7、修复wifi和radio:
打开build.prop,找到以下内容(可以参考官方包中的改):
(MT6572不需要这样做)
fmradio.driver.chip=1
(把1改为3,如果你的cpu是MT6628)
mediatek.wlan.chip=MT6620
(修改这个 mediatek.wlan.chip=MT6620 为你的 WLAM 芯片型号 例如我的是mt6628,那么改为: mediatek.wlan.chip=MT6628)
mediatek.wlan.module.postfix=_mt6620
(修改这个 mediatek.wlan.module.postfix=_mt6620 为 你的 WLAM 芯片型号, 例如我的是_mt6628,那么改为: mediatek.wlan.module.postfix=_mt6628)
* 然后打开要移植包的刷机脚本,找到下面内容,没找到自己添加。
symlink("wlan_mt6620.ko", "/system/lib/modules/wlan.ko")
(把这里的 wlan_mt6620.ko 改为你的 WLAM 芯片型号。 例如我的是mt6628,那么改为: wlan_mt6628.ko ),然后替换以下文件:
/system/bin/p2p_supplicant
/system/bin/wpa_supplicant /system/lib/libwpa_client.so
/system/lib/libhardware_legacy.so
/system/lib/有wifi或wlan字眼的so文件
8、内置储存和外置储存反了
替换/system/etc/vold.fstab为官方。
9、usb不能挂载储存卡
替换/system/bin/vold为官方。
10、传感类方面
替换/system/hw下所有文件和
/system/lib/libsensorservice.so
ZhaoHay翻译,删减部分无用内容。
展开阅读全文