上次我们在《Android ROM DIY之MTK平台手机通用移植》中讨论了MTK芯片手机同平台移植的方法,那么今天我们就谈谈跨CPU平台的移植,以MT6582移植MT6572为例。实际上大致步骤都差不多,只是还需要注意更多的细节。
一、准备ROM
参看同平台篇
Android ROM DIY之MTK平台手机通用移植(同平台篇)http://www.morecomtech.com/community/article/sjjc/w2015102700.php
二、build.prop修改
打开移植包的build.prop,找到ro.mediatek.platform=MT65xx,修改这个MT65xx;再找到ril.telephony.mode=# 这里#为一个数字,把这个数字改为官方包里的;至于机型、版本请酌情处理。
三、刷机脚本的修改
1.修改分区,(参看同平台篇)
2.在"set_perm"这一大段找到set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt65xx.so");修改这里的mt65xx。
3.移植内核(这里可以用BeyondCompare直接对比修改)
用boot解包工具把官方boot和要移植的boot解包。这里以6572移植6589为例。
第一步:打开要移植的boot解包后的boot.img-ramdisk,然后从中复制所有文件到官方boot中的boot.img-ramdisk 文件夹中。如果文件存在就跳过,相当于把要移植包boot中多余的文件复制到官方中去。打开官方boot.img-ramdisk文件夹中的init.rc。
①修改default.prop,参照要移植的boot改
②#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
修改后面两个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
第二步:修改init.rc里的启动项
以移植LewaROM为例(MIUI大同小异,只是后面的lewa-framework.jar是miui-framework.jar而已,其它第三方ROM也差不多,具体看第三方ROM的启动项后面)
复制以下代码(不放心的可以解开要移植包的内核查看):/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
修改好以后保存文件,然后打包boot.img,搞定!
后面就是打包ROM,然后该干嘛干嘛。
附:若遇到短信,电话,设置,通讯录强行关闭,可通过如下方法修复
1.反编译官方和要移植的包中framework.jar,找到:\smali\com\mediatek,替换官方所有的这个文件夹的内容到移植的ROM中。
2.\smali\com\android\server替换官方所有的这个文件夹的内容到移植的ROM中。修改好后,回编译要移植的ROM的framework.jar,然后替换回去。
下次我们介绍在移植过程中常见的问题以及解决办法。