上篇我们简单的介绍了怎么移植rom,这一篇我们就来探讨怎么去修复移植留下的后遗症。相对于移植rom,修复bug也是很费心思的。通常我们移植rom会遇到的bug,无外乎就是相机,信号,蓝牙,wifi等等。现在就针对这几问题来发表一下自己的见解,不足之处请大家补充一下。

本篇教程分为上下两个部分。上部为移植rom后卡在第一屏或者开机画面的解决方案,下部分为移植rom后能开机进入桌面但是有BUG的解决方案。

(上),移植rom后无法进入桌面的解决方法。一般来说,移植rom替换的文件越少越好,系统会更加稳定。我移植rom首先是从简而行,也就是说先移植boot.img,修改一下刷机脚本,修改一下build.prop文件,接着便开始打包刷机。能进入桌面,便针对性修复出现的bug;不能进入桌面,再试着替换sysytem里的驱动文件。

如果经过上述操作,依然开不了机,或者黑屏,还可以试试通过替换hw文件夹解决。
【位置:/system/lib】

(当然,这一步最主要的问题是解决黑屏问题,这是由于传感器差异引起的,表现特征为能开机(手机震动,按键显示灯亮了,可就是漆黑一片,什么都看不到))

如果依然开不了机,还可以试试替换这个驱动能否开机。
【位置:/system/lib/libandroid_runtime.so】

(一般我不换这个驱动,无奈之举才换这个试试看)

如果还是开不了机,那么,恭喜你,你中头奖了,那我只能说:
少年,此rom不可移植!!!恭喜你哦,亲!!!换个rom试试吧!!!

(下)能进入桌面,但是有bug的修复教程。
一:手机没有信号或者信号弱,解决方法,替换官方的基带文件:
有时有如果如果单一替换了modem.img,信号还是很弱的话,可以加这个进去,catcher_filter.bin(一般这个就不用了替换了mtk,,多数情况下是一样的)
\system\etc\firmware\modem.img
\system\etc\firmware\catcher_filter.bin

二:不能打开wifi,蓝牙等
Wifi不能用,蓝牙不能用,情况有以下几种:
1.脚本的问题,解决方法,用官方的脚本刷,或者自己添加刷机语句,建议用文件对比器来对照脚本(官方脚本)的差异:

注意对此脚本中出现的mtk_6620那一段,一定要和官方保持一样。

2.脚本没有问题,那么我们就再次替换ETC,固件文件夹下的wifi和蓝牙低层驱动试试(替换为官方,下同).
【在system/etc/firmware下】

其实这时我们可以完全替换了etc文件夹下framewor文件夹,(wifi信号差也是替换试试,不过多数mtk的wifi底层驱动都一样的)一般来说,直接替换整个文件是不会出问题的,可我想说的依然是那句话:移植其实不是文件换的越多越好,反而是换的越少系统越稳定!!

3.如果就算替换了整个framewor文件夹,wifi和蓝牙依然用不了,那么接下来就是替换通信模块
位置:/system/lib/modules

要替换的文件(主要是带有wifi,wlan): 【位置:system/lib/modules】 gps用不了,信号差,也是替换里面带有gps字样的文件,fm收音机也一样 【位置:/system/lib/modules】

另外,多数人的移植习惯是在一开始时就直接替换了modules文件了事,其实我并不认同,因为有时直接替换官方的modules文件夹过去,会导致开不了机,卡在第一屏,例子:vivos94.1.1,直接替换这个文件夹,结果就卡在第一屏。不过一般情况下还是可以直接替换的!!

4.如果脚本没有问题,换了modules和framewor文件夹,下的相应驱动,结果还是解决不了wifi和蓝牙,那么接下来的就是要替换lib下带有wifi,wlan,bluetooth字样的驱动,例如:
【位置:/system/lib】

wifi一直重复获取IP,就是连不上 替换system/etc/dhcpcd文件夹下的dhcpcd-run-hooks文件

5.还是不行的话,就着手替换了ect下的wifi文件夹试试
【位置:/system/etc】
再不行的话,那么再替换etc下面的permissions文件夹的相应文件试试(带有wifi字样的)。
【位置:/system/etc/permissions】

(如果经过以上方法,还是不行的话,那我也无能为力了!!)

三,相机不能对焦或者提示无法连接。自动对焦驱动:libcamalgo.so
相机驱动:libcameracustom.so
不过你只换相机驱动你会卡在第二屏的,只换对焦驱动会无法连接相机,不管你移植那个4.0或者4.1的系统只要换这十二个驱动相机肯定可以完美解决,以下是驱动名,记住要全部换哦!
HW目录下:
camera.default.so
lib目录下:
libcamalgo.so
libcamera_client.so
libcameracustom.so
libcameraprofile.so
libcameraservice.so
libmhal.so
libmhalcontent.so
libmhaldrv.so
libmhalmdp.so
libmhalpipe.so
libmhalscenario.so
libmhalutility.so

相机能用,手电筒无法使用,只需要替换libmhal开头的驱动。其中HW目录下的camera.default.so是必须替换为官方的,否则会出现相机最高像素不符合的情况(比如移植包的相机大小最高只有500万像素)。

忘了说位置了,【位置/system/lib】

当然,你做完上述步骤后还有可能会出现相机无法对焦的情况,比如说N821移植oppo T29的包就是。话说我曾为此烦恼了好一段时间,最后发现是boot.img问题(这个方法我可是全网首发哦,要知道置顶帖的那个oppo t29包就是按照这个方法解决的)。现在需要一样工具:windows下打包解包boot.img mtk专用,链接地址:http://pan.baidu.com/share/link?shareid=3115259089&uk=2216611990(具体使用方法里面有)
现在我们分别对已移植过的boot.img和官方的boot.img进行解包,再用文件较比软件对比boot/ramdisk目录下的init.rc这个文件,找到带有camer字符的那一段把这一段替换为官方的即可。接着再进行打包,更名为boot.img放进刷机包内即可以了!!!

还有带有dev字符的那一段也要改成和官方一样的。

四,USB,内存挂载的问题
解决方法:一般替换这个文件vold.fstab
【位置:/system/etc】
有时还需要替换vold.fstab.nand这个文件
【位置:/system/etc】
当然还可以通过修改build.prop(不是rom里面的,是boot里面的)文件,至于怎样修改,很简单,看看这句是否等于1,不是就改为1.(默认开启usb连接状态)
persist.service.adb.enable=1
persist.sys.usb.config=mass_storage,adb
另外附上是内存卡加速的方法,直接添加语句。
#Don'tset/proc/sys/vm/dirty_ratioto0whenUSBmounting
ro.vold.umsdirtyratio=20
至于有没有效果,我就不得而知了,反正我还没有试过,有时间就试试看!!!

 

1.卡里面准备一个正常的ROM随时准备救砖,切记
2.那些想手机端移植的可以绕道了
3.首先准备一个官方包
4.然后就是准备好你要移植的底包,百度一下,比如中兴V818 注意刷机包版本必须为Android4.2.2
5.解压自己的官方包和要移植的底包,为了方便记,我把官方包的文件夹叫A,要移植的包叫B
6.替换基带,将B文件夹system/etc下的firmware文件夹整个删掉,替换成A的
7.替换lib链接库,将B文件夹lib下的modules文件夹和hw文件夹整个删掉,替换成A的。
8.替换键盘配置文件,将B文件夹system/usr下的keychars和keylayout删除,换成A的
9.将B文件夹system\vendor下的lib文件夹删掉,换成A的
10.最后就是修改buid.prop配置文件了,没什么好说的,就是改成自己机型,推荐使用Notepad++这个软件修改,小白不懂可以跳过这一步。
11.移植内核,这个也没什么好说的
一键移植内核工具:pan.baidu.com/share/link?shareid=263029331&uk=2301492310
解压后,有三个文件夹,官方的BOOT,这个文件夹不需要动,把要移植的底包里面的boot.img移动到‘要移植的boot’这个文件夹,然后里面有个CMD批处理,打开按任意键,提示成功后就ok了,‘已完成的boot’里会生成一个新的boot.img,把它移到B文件夹。
12.基本大功告成,刷机脚本一般不用改的,有特殊情况要改,请看下面,准备notepad++这个软件,百度可以下载。
13.查看刷机脚本,用notepad++打开META-INF\com\google\android\updater-script查看是否有以下内容
assert(getprop("ro.product.device") == "这里不确定,根据机型变化不同" ||
getprop("ro.build.product") == "这里不确定,根据机型变化不同" || 
getprop("ro.product.device") == "这里不确定,根据机型变化不同" ||
getprop("ro.build.product") == "这里不确定,根据机型变化不同");
assert(package_extract_file("recovery.img", "/tmp/recovery.img"),
write_raw_image("/tmp/recovery.img", "recovery"),
delete("/tmp/recovery.img"))
assert(package_extract_file("uboot.img", "/tmp/uboot.img"),
write_raw_image("/tmp/uboot.img", "uboot"),
delete("/tmp/uboot.img"));
如果有就删掉,其他不用怎么改的。
这段话从网上复制的,如果卡在第一屏,可以试试。

 

短信,电话,设置,通讯录强行关闭,修复方法:
反编译官方和要移植的包中framework.jar
*找到:
\smali\com\mediatek
*替换官方所有的这个文件夹的内容到移植的ROM中
*然后,找到
\smali\com\android\server
*替换官方所有的这个文件夹的内容到移植的ROM中
*修改好后,回编译要移植的ROM的framework.jar,然后替换回去。
无信号、未知基带、无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
GPS问题,替换:
/system/xbin/libmnlp

蓝牙问题,替换:
/system/lib/libbluetooth_mtk.so
/system/lib/libbluetoothem_mtk

 

 

via。http://tieba.baidu.com/p/3712149806