移动叔叔

标题: 有人来搞一下么...百度云ROM移植教程(基于MTK6577) [打印本页]

作者: ℡__死卓、    时间: 2013-3-22 08:45
标题: 有人来搞一下么...百度云ROM移植教程(基于MTK6577)
百度云已经有了MTK6577平台的ROM A789,基于A789,我们可以将百度云ROM移植到其他的MTK6577的机型上。类似的可移植机型还有:联想P700i、联想A800、联想A660、联想s850e、金立GN700W、金立C700、金立C610、纽曼N1、中兴V889M、中兴V880F等,把机型写出来供大家参考。
根据自身的移植心得,再参考其他已有教程,总结了一下百度云ROM的移植。在本文中我们将会对市面上存在的可以刷MTK6577 平台机器的移植进行介绍,本篇理论上适用于所有MTK6577 平台的移植。

准备环境:
cygwin安装,如果有linux环境,则可以直接绕过这一步:
http://bbs.gfan.com/android-3940709-1-1.html   

MTK刷机工具下载地址:
http://pan.baidu.com/share/link?shareid=217870&uk=3609743142      

一、选择合适的基础包
1.1 选择合适的第三方ROM 包
市面上MTK 平台的手机众多,这时我们需要选择一个合适的ROM 作为基础包(这这里简称Base)。
首先,本篇中我们讲的是直接将MTK6577 平台手机的官方ROM 移植成为百度的ROM。
在这里我们首先要找到自己机型的刷机包,然后进行如下操作(如果是卡刷包可以直接跳过):
1)首先要找到自己机型的线刷包和卡刷包,卡刷包的目的主要是不用去解包system.img;
2)提取卡刷包的system(或者找工具解包线刷包的system.img);
3)提取解包出来的system 文件夹和线刷包中的boot.img。
1.2 选择合适的百度OS 刷机包
在这里一定要注意,现在百度MTK6577 暂时仅支持WVGA(800X480)分辨率,但是后续应该会支持其他分辨率的机型的!
现在,请大家到百度官方下载联想A789 的刷机包作为移植基准包(后面简称sample 包)!

二、移植之前的准备工作
选择好合适的base 包并下载完sample 包以后,我们首先要进行上面的操作得到system 文件夹和boot.img,这时再将sample 包解压到任意文件夹。
1.明确移植操作的方向
在这里,我们首先一定要明确移植的方向是:
以百度的sample 包作为最终成型刷机包的基础,把base 包中各机型特有的东西加上去,最终形成自己的刷机包。
2.学习使用BeyondCompare
使用BeyondCompare进行对比操作,篇幅所限,本文中不再教给大家,但是在互联网中关于这个工具的教程有很多,大家可以自学下。

三、移植过程中所需要的操作
1.移植百度的应用层和framework 框架层- W8 t3 z; k  [/ B0 @
此处将如下图三个文件夹必须使用百度sample 包的,否则会产生各种bug:
9   

2.移植lib 层
system 下的lib 文件夹主要是Android 系统的动态链接库,这里面有一些是系统硬件相关的接口,以及
一些系统层应用需要调用的库文件,还有厂商的HAL 层的库文件,百度同样在此处进行了修改。
所以在移植这里的时候一定要谨慎,不能随便删减添加东西,但是其中的modules 必须使用官方base 包的,下面给出使用的基本列表,在列表以外的尽量保持百度sample 包的:的
  库
需要替换为官方的文件状态(如果没有需要添加)
modules 文件夹必须整个使用官方base 包的
使用BeyondCompare 对比出来base 包多的.so 文件可以添加
3.移植system/bin 和system/xbin 文件夹
必须全部使用sample 包的,否则有可能出现系统权限错误,busybox 失效等问题
4.移植system/media 文件夹整个文件夹必须使用百度sample的,否则可能出现开机动画消失,锁屏消失,无法开机等问题。
5.移植system/usr 文件夹,
这里请将sample 包的keychars 和keylayout 两个文件删除,替换为base 包中的这两个文件夹。
6.移植system/etc 文件夹
必须将sample 文件夹中firmware 文件夹删除,替换为官方base 包中的firmware 文件夹。:
7.修改build.prop
必须使用base 包中官方的build.prop,但是必须在build.prop 任意位置加入如下几行(对比了A789百度和联想官方的build.prop,发现百度修改和添加了一下prop,移植时如果base的build.prop有这个属性,替换,没有则增加即可):
ro.baidu.build.hardware=A789(这里以A789为例,可选择自己适配的机型)
ro.baidu.build.hardware.version=1.0
ro.baidu.build.software=yi_3.0
ro.baidu.build.version.release=2.1
ro.product.manufacturer=Baidu
persist.sys.emmc=/mnt/sdcard2
ro.config.notification_sound=Ding.mp3
ro.config.ringtone=Echo.mp3
ro.config.alarm_alert=alarm.mp3
删除以下几个属性
ro.operator.optr=
ro.operator.spec=
ro.operator.seg=

注意事项:
修改build.prop,建议直接使用BeyondCompare来做,按给出的参考进行复制。

8.移植boot.img
这里无需多说,boot.img 启动镜像必须使用自己手机的。对比了一下百度和联想官方的boot.img,发现百度修改了boot.img里的default.prop和init.rc来支持手机root和它自己的一些服务。
注意事项:
由于.gz文件格式的问题,要修改ramdisk里的default.prop和init.rc,必须在linux下修改
解包和打包mtk的boot.img的方法和工具见如下连接,需要安装perl:
http://hi.baidu.com/juicewb/item/60894415329ae2fb65eabfa9
修改:boot.img-ramdisk/default.prop
ro.secure=1   修改为  ro.secure=0
ro.debuggable=1 修改为 ro.debuggable=1
persist.sys.usb.config=mass_storage 修改为 persist.sys.usb.config=mass_storage,adb

修改:boot.img-ramdisk/init.rc
a)         添加副卡路径(可选):在export EXTERNAL_STORAGE /mnt/sdcard后面加上一行export SECONDARY_STORAGE /mnt/sdcard2  
注意:不一定是/mnt/sdcard2, 如果加上后,文件管理器上面找不到手机上的文件,请不要添加这一项
b)         将BOOTCLASSPATH改为百度的,为了防止有些jar包遗漏
c)         另外在on fs下加上
chown root root /system/bin/su
chmod 6755 /system/bin/su
d)         添加以下内容, 好像是百度的服务
service alljoyn-daemon /system/xbin/alljoyn-daemon --internal --no-switch-user --no-bt
    class main
    oneshot
service WordSegService /system/bin/WordSegService
         class main
         oneshot

service backuprestore /system/bin/backuprestore
    class main
socket backuprestore stream 600 system system

四、移植完成后的工作
1.压缩打包为zip 刷机包
META-INF建议在百度的A789基础上进行修改
修改META-INF/com/google/android/updater-script:
百度的A789在这里添加了:
assert(getprop("ro.product.device") == "A789" ||
       getprop("ro.build.product") == "A789" ||
       getprop("ro.product.device") == "a789" ||
       getprop("ro.build.product") == "a789");
这个需要根据具体机型进行更改,要不然就直接删除吧。
assert(package_extract_file("recovery.img", "/tmp/recovery.img"),
       write_raw_image("/tmp/recovery.img", "recovery"),
       delete("/tmp/recovery.img"));
这个是要来刷recovery的,如果没有就删除吧。
2.压缩打包为zip 刷机包
完成上述操作后,你的百度OS 移植ROM 已经基本完成了,这时候,你需要将你解包sample 包出来并移植完成后的system,META-INF 文件夹以及boot.img 启动镜像打包回去,只需要像平时压缩文件时一样,将它们打包为一个zip 压缩包。在这里一定要注意,必须使用zip 格式压缩,同时不能用太大的压缩码率。

3.使用Recovery 输入ROM 包进行测试!
我相信进行移植操作的各位都已经很熟练刷机这个步骤,但是在这里我还是要提醒大家,做好的ROM 一定要自己刷入进行测试,刷入时一定要双清(双Wipe)。

4.测试过后出现Bug 的反馈机制
我相信大家只要选好base 包,并如上操作,你们的百度ROM 已经成型并可以使用了。
但是,因为每一个ROM 制作者针对不同机型所做的修改不同,有可能会出现一些Bug,如果出现了大家无法解决的Bug。
这时,可以考虑去百度云rom论坛反馈问题,请教百度云rom的大神们!!!哈哈~~~~




欢迎光临 移动叔叔 (http://bbs.ydss.cn/) Powered by Discuz! X3.2