快乐论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2268|回复: 0
收起左侧

[经验之谈] 教程分享--安卓ROM移植基础教程(一)

[复制链接]
  • TA的每日心情
    开心
    2023-11-19 15:29
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    1284

    帖子

    4万

    金币

    5万

    积分

    站长

    Rank: 9Rank: 9Rank: 9

    积分
    51245

    优秀版主

    发表于 2013-11-21 05:20 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 99423 于 2013-11-21 05:23 编辑

    很多朋友都想自己移植ROM,但是网上没有好的教程。小编这次找到了一些教程,结合自己的经验,跟大家分享一下。这里感谢肥虫!一次写不完,我就分开写了。有兴趣的朋友可以留意一下,不想花时间移植的机友就纯当路过了。

    另外本教程主要是针对Android4.0,非此版本请谨慎行动。

    一、找相近机型

    找相近机型主要是为我们移植rom节省功夫,因为相近机型的rom大部分驱动都是相同的,比如和小编用的G22相近的机型有G14、G18、One S,然后我选择的是G14的ROM,为什么?因为G14与G22的硬件配置最相似,比如CPU是同型号的,分辨率也是一样的,连摄像头像素都一样,所以为G22移植ROM,找G14机型的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这一项,这一项后面就是启动系统的相关项目,不同机型不同系统这一项启动内容都不一样,那么我们怎么修改这个呢?很简单,比如我们解包G14的sense4的rom,找到G14的内核boot.img,然后解包G14的boot.img,找到init.rc文件,然后用文本打开将export BOOTCLASSPATH这一项后面的内容全部复制,然后再到22的init.rc,把export BOOTCLASSPATH这一项的内容复制上去,简单的说就是将G11的启动内容复制到G22的启动内容上,到这里,boot.img的移植就完成了,最后将G22的boot.img打包回来。

    三、修改rom包刷机脚本

    我们知道recovery刷机包都是zip格式的,所以我们完全可以解压修改后再打包回来,完全没有问题。比如我们下载G14的一个XUI的官方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")== "ruby" ||

    getprop("ro.build.product") == "ruby");

    将mount("ext4","EMMC", "/dev/block/mmcblk0p23", "/data");

    改为mount("ext4", "EMMC", "/dev/block/mmcblk0p31","/data");

    修改好保存updater-script

    注意上面的红色数字改成你data分区的分区表的代码。红色数字每个机型特定,如果错误,ROM直接就不能刷了。如何查看分区表信息,可以直接找度受。或者等小编后续的教程。

    四、替换boot.img

    将修改好的G22的boot.img(不会修改boot的机油可以直接用相同UI的ROM的boot.img)替换到G14的XUI官方ROM里面

    五、签名打包

    重新打包ROM为zip格式,然后拿去刷机吧,按照上面过程操作,这个rom完全可以开机进入系统的。

    不过进入系统之后你会发现完全不能使用啊,各种进程停止。因为简单替换boot.img,虽然可以进入系统,但是由于驱动或配置不同,还是存在很多bug的,比如开机后不能识别内存卡,usb不能挂载内存卡,wifi不能用,wifi热点不能用,GPS不能用,重力感应不能用,声音有问题等等。这些都会在后续的教程中间一一解决,尽量使我们的ROM更完美。


    快乐论坛http://bbs.99423.com
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|快乐论坛 ( 粤ICP备2021023480号 )

    GMT+8, 2024-4-24 06:15 , Processed in 0.145195 second(s), 27 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表