第一篇 帖最后由 ysjlsw 于 2012-10-13 22:44 编辑
前言:因为很多机友都想自己移植rom,苦于找不到教程,所以我今天抛砖引玉啦,为了大白,为了我们玩机一族,我慢慢将这段时间移植的经验分享一下,估计一天写不完,那就分几篇写啦,有兴趣的朋友可以留意一下,不想花时间移植的机友就飘过啦! 另外我移植的经验都是基于安卓4.0的,我只保证安卓4.0可以通过此方法顺利快速移植一个ROM,那么想移植安卓2.3或者移植安卓4.1的朋友就另外请教高手啦。
一、找相近机型 找相近机型主要是为我们移植rom节省功夫,因为相近机型的rom大部分驱动都是相同的,比如和我们大白G21相近的机型有G10、G11、G12,我推荐大家找G11的rom,为什么?因为G11与我们大白G21的硬件配置最相似,比如CPU是同型号的,分辨率也是一样的,连摄像头像素都一样,所以为我们大白G21移植rom,找G11机型的rom是首选。
二、移植boot.img 移植安卓rom首先要移植boot.img,这里我只说一下要重点修改boot.img里面的内容,此外怎么解包和打包boot.img就不在这里谈及了,网上有很多教程,多用搜索功能。我推荐用厨房软件解包boot.img,解包boot.img后有BOOT-EXTRACTED文件夹,BOOT-EXTRACTED文件夹里面有boot.img-ramdisk文件夹和zImage内核,我们找到boot.img-ramdisk文件夹里面的init.rc文件,移植boot.img全部就在init.rc文件,init.rc文件我理解就是一个启动文件,我们开机后通过init.rc文件启动系统。好,现在我们用文本编辑打开init.rc文件,找到export BOOTCLASSPATH这一项,这一项后面就是启动系统的相关项目,不同机型不同系统这一项启动内容都不一样,那么我们怎么修改这个呢?很简单,比如我们解包G11的sense4的rom,找到G11的内核boot.img,然后解包G11的boot.img,找到init.rc文件,然后用文本打开将export BOOTCLASSPATH这一项后面的内容全部复制,然后再到我们G21的init.rc,把export BOOTCLASSPATH这一项的内容复制上去,简单的说就是将G11的启动内容复制到G21的启动内容上,到这里,boot.img的移植就完成了,最后将我们G21的boot.img打包回来。 将G11的启动项复制到G21的启动项里,修改完打包boot.img就可以了!
本帖隐藏的内容
三、修改rom包刷机脚本 我们知道recovery刷机包都是zip格式的,所以我们完全可以解压修改后再打包回来,完全没有问题。比如我们下载G11的一个MIUI的官方ROM,解包后里面有META-INF文件夹,有system系统文件夹,有boot.img内核文件,我们只要修改META-INF文件夹,META-INF里面都是刷机脚本文件,操作如下: \META-INF\CERT.RSA 签名文件 删掉 \META-INF\CERT.SF 签名文件 删掉 \META-INF\MANIFEST.MF 签名文件 删掉 \META-INF\com\android 机型验证文件夹 整个删掉 \META-INF\com\google\android\ update-binary 刷机命令程序 保留 \META-INF\com\google\android\ updater-script 刷机脚本 需要修改 修改updater-script如下: 用文本打开updater-script,删除以下两行机型验证 assert(getprop("ro.product.device")== "vivo" || getprop("ro.build.product") == "vivo"); 将 mount("ext4","EMMC", "/dev/block/mmcblk0p26", "/data"); 改为mount("ext4", "EMMC", "/dev/block/mmcblk0p29","/data"); 修改好保存updater-script
四、替换boot.img 将修改好的G21的boot.img(不会修改boot的机油就用我的最终版里面的boot.img)替换到G11的一个MIUI的官方ROM里面
五、重新打包G11的一个MIUI的官方ROM为zip格式,然后拿去刷机吧,按照上面过程操作,这个rom完全可以开机进入系统的。
让我们回顾今天的移植要点,第一找相近机型的rom,第二移植boot.img,第三修改rom包里面的刷机脚本,第四替换boot.img,第五打包rom后刷机,成功进入系统,初步移植教程结束。 没错,纯粹是替换了boot.img就完成了移植,这么简单我们大白就可以用到小米系统了,看似很复杂的移植,却如此简单,这都要归功于我们大白有相近机型G11,因为它们大部分驱动都是通用的。
今晚就到此为止,下次我就着重讲一下接下来怎么把bug一个个修复,因为简单替换boot.img,虽然可以进入系统,但是由于驱动或配置不同,还是存在很多bug的,比如开机后不能识别内存卡,usb不能挂载内存卡,wifi不能用,wifi热点不能用,GPS不能用,重力感应不能用,声音有问题等等,没关系,等肥虫第二篇教程慢慢告诉你们,慢慢将以上bug一个个攻破,享受移植的快乐,我们下次见!
|
****************************************************
本帖最后由 ysjlsw 于 2012-10-14 23:18 编辑
第二篇--移植MIUI
移植前准备
1、首先推荐大家用一个文件对比软件BCompare,自行到网上下载,用BCompare进行对比非常方便。2、选择一个合适的G21官方4.0的rom,最好是原汁原味的官方rom,没有太多的优化或精简,已经做好odex合并,选择这样的rom目的是考虑到稳定,这样有利于我们进行移植。
移植前先介绍一下rom包的简单结构:我们最常用的一种刷机方法就是通过recovery刷机,recovery刷机rom就是zip格式的压缩包,里面结构如下:\META-INF刷机脚本,recovery刷机时通过里面的脚本命令刷机\system安卓系统,移植时就是改动里面的文件\system\app这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件\system\bin这个目录下的文件都是系统的本地程序,里面主要是Linux系统自带的组件(命令)\system\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置\system\fonts字体文件夹\system\frameworkframework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架\system\liblib目录中存放的主要是系统底层库,一些so文件,如平台运行时库\system\media\system\media\audio铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音\system\sounds默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件\system\usr用户文件夹,包含共享、键盘布局、时间区域文件等
以上大概说了rom包里面各文件夹的功能,现在我们把目光投向其中三个文件夹,这三个文件夹分别是:\system\bin
\system\etc
\system\lib我们移植rom主要修改的就是以上三个文件夹,除了这三个文件夹外其它文件夹基本不用动现在我们以移植MIUI的rom为例子1、我们先到MIUI的官方网站下载一个G11现成的MIUI_V4 刷机包,把它命名为miui_IncredibleS_2.10.12.zip2、准备一个G21的官方4.0刷机包,命名为G21_stockrom.zip3、分别把以上两个rom包解压到同一个文件夹里面,然后打开BCompare对比软件,把解压后得到的miui_IncredibleS_2.10.12和G21_stockrom文件夹拉到BCompare进行比对,请把G21_stockrom放到左侧,把miui_IncredibleS_2.10.12放到右侧
第一步,设置对比规则(点击工具栏戴黑帽的小人),设置比较,见下图
设置好后点击确定第二步,显示设置为显示左侧孤立项,见下图
第三步,点击中间打开system进行对比,这时左侧显示出来的文件都是G21_stockrom的孤立文件,我们需要把bin、etc、lib三个文件夹的孤立文件复制到右侧,见下图
接着,我们把显示设置成显示差异项但不包括孤立项,见下图
接着,我们需要把etc整个文件夹复制到右侧,bin和lib两个文件夹不用动,见下图
好了,到这里可以关闭BCompare对比软件了。
接着,我们将要手动把关键特定的G21的驱动复制到miui_IncredibleS_2.10.12文件夹里面
要复制的特定驱动文件如下:
\system\bin\netd wifi热点有关
\system\bin\vold usb挂载内存卡
\system\bin\wpa_supplicant wifi有关
\system\etc\vold.fstab 我们常说的内存卡分区文件
\system\lib\hw\gps.runnymede.so gps驱动
\system\lib\hw\hwcomposer.msm7x30.so 驱动相关,不替换会出现卡顿
\system\lib\hw\sensors.runnymede.so 感应驱动
\system\lib\modules\bcmdhd.ko wifi驱动
\system\lib\modules\kineto_gan.ko wifi驱动
\system\lib\libhardware_legacy.so wifi驱动相关
以上特定驱动原则上都是从我们G21官方rom里面提取就可以,但是实际上会出现其他问题,此过程我已经尝试过无数遍,自己找到最合适的了,为了方便机友节省时间,我将以上特定驱动打包传上来,分享给大家了,不用大家到处找和不停调试。
接着,要删除miui_IncredibleS_2.10.12文件夹的多余驱动,多余文件如下:\system\lib\hw\gps.vivo.so
\system\lib\hw\sensors.vivo.so
\system\lib\modules\bcm4329.ko
接着,修改miui_IncredibleS_2.10.12文件夹里的build.prop文件,用文本编辑打开,参照以下我提供的修改:ro.product.model=HTC Sensation XL with Beats Audio X315e
ro.product.model=HTC Sensation XL with Beats Audio X315e
ro.product.name=htc_runnymede
ro.product.device=runnymede
ro.product.board=runnymede
ro.build.product=runnymede
ro.product.processor=1.5GHz
ro.product.ram=768MB
ro.product.display_resolution=4.7 inch WVGA resolution
ro.product.main_camera=8M
ro.product.front_camera=1.3M
ro.product.bluetooth=3.0
ro.product.wifi=802.11 b/g/n
通过以上复制、替换、修改等操作,移植MIUI就大功告成了,还有记得把G21的boot.img替换进去哦,还有要适当修改刷机脚本\META-INF,这个我在第一篇教程里面说的很详细了,到此我们将miui_IncredibleS_2.10.12文件夹里面的系统打包成zip格式就可以了,然后拿去用recovery刷机,就这样一个完整没有bug的MIUI小米系统就移植到我们大白G21手机上了。
今晚有点累,不知道说清楚没有,如果不明白就回复我啦~~~
下一篇教程,我会教大家移植sense4的rom!****************************************************************
帖最后由 ysjlsw 于 2012-10-19 11:32 编辑
======================= G21 Sense4最终版 =======================
ROM名称:G21_Sense4_Final.zip (意思是大白的Sense4最终版)
ROM大小:390M 日期:2012年10月18日
hboot版本要求:需要1.25的hboot,1.28的请自行把vold.fstab修改成34
版本特点:界面漂亮,非常流畅,值得一刷
最终版更新如下:
1、毒液商店可以用了,所以最终版重新保留毒液商店。
2、打上卡顿补丁,不会出现卡顿现象了。
3、修复设置里的毒蛇高级设置,里面的功能基本能用了。
4、修复好音量键不能唤醒屏幕的问题。
5、更新了一些驱动,去掉不属于G21的多余驱动,更稳定更加省电。
6、还有其他一些小改动,请自行体验......
正常使用的有:所有功能都能用
唯一的BUG:还是老问题,通话中来第二个电话或者来信息或者按拨号键,听
筒都会静音,这个貌似是phone.zip程序的bug,肥虫本人真的没办法解决了,
希望能解决的朋友给大家分享一下解决办法啦。临时解决办法:按一下扬声器
再切换回听筒就有声音了,或者用耳机、蓝牙耳机打电话,都不会出现以上问题。
附屏幕截图:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。