分享

带你入门:初级手机 ROM 移植方法

 风我是星海 2021-04-13

​​​

在进行ROM移植之前呢,首先你要对你的机型配置和参数要有一点了解,

CPU型号、分辨率、内存大小、是否支持外置内存卡、是否带有nfc功能 单卡or双卡、运营商信息;然后通过你这个参数去找相对应的机型。

接下来就是看你要移植机型的ROM是安卓几点几,然后找自己机型相对应的安卓版本rom作为移植底包(比如我是要移植红米note4G的miui,它是安卓4.44,我就要找我的机型的安卓4.4.4作为底包去移植)4.3可以移植4.4 5.0, 但是5.0以上不能移植4.4 4.3。


好了,废话不多说,进入正题:

准备工具:

对比工具BeyondCompare安装jdk并且配置好环境准备好boot解包工具百度一下很多种或者自行下载mkboot

ROM结构介绍:

在移植之前要先了解一下安卓ROM的基本结构和各个文件的基本属性

1、system/app这个里面主要存放的是常规的应用程序,都是以apk格式结尾的文件,在这个文件夹下面的程序为系统默认的组件,个人安装的软件不会出现在这里,而是data文件夹中。

2、system/bin 这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件。

3、system/etc 该文件夹下保存的都是系统的配置文件,比如APN接入点设置声音配置wifi配置蓝牙等核心的配置。

4、system/fonts 该文件夹下除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库或者一些unicode字库。

5、system/framework 该文件夹下主要是一些核心的文件,是系统平台的框架。

6、system/lib目录中存放的主要是一些硬件驱动或者系统的底层库,比如系统平台运行时的服务库,移植过程中很多关键的地方在于此。

7、system/media 该文件下包括开机动画的文件、音乐铃声文件夹,除此以外还包括一些系统提示音文件。

8、system/usr 用户文件夹,包括一些共享、时区文件、键盘的一些布局文件

9、META-INF 这个里主要是存放刷机脚本(META-INF\com\google\android_updater-script)和签名文件。

第一步,移植boot(内核):

boot最简单的移植办法有两种:

一种是替换官方boot的kernel和dt_img这俩个文件到移植包内核里面

一种是替换移植包的ramdisk.gz到官方包内核里面

这是最简单的内核移植方法

第二步,移植system:

ROM移植也就是拼包。操作简单不需要源码编译,也不需要专业知识,这是文件相互替换。

下载好移植包和官方底包

解开后再对比工具中打开

然后打开system对比

替换bin目录下/sdcard  /vold 到移植包

替换etc/firmware到移植包

替换usr/keylayout到移植包

lib 和hw驱动暂时不换

接下来就是改刷机脚本中的分区挂载

updater-script这个文件是刷机时recovery所执行的二进制脚本也就是大家说的刷机脚本

主要修改的有:system分区,data分区,boot分区

分区一般有两种形态:

一种是:

format("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "0", "/system");

mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system");

另一种是:

format("ext4", "EMMC", "/dev/block/mmcblk0p23", "0", "/system");

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

一般同cpu分区基本相同 不需要改,如果是不同cpu的话就要参照官方修改分区脚本,否则很容易造成黑砖。

刷机脚本修改完呢,加上修改好的内核,然后打包签名进行刷机

如果出现不开机或者卡第二屏的话试试换下lib下的驱动注意不能换相机和声音驱动。

PS:注意以上教程仅适用于32位cpu的系统。

刷机测试过程中,对一些常见的bug的分析以及解决的方法

鉴于每位ROM制作者所移植的机型不同,进行了不同的修改和替换,难免在刷机和测试过程可能出现一些bug,接下来是一些常见的bug以及问题的解决方法:

bug:无法打开wifi

解决办法:替换bin/wpa_xxx;替换etc/wifi

bug:没有声音

解决办法: 替换\etc\mixer_pathsXXX.xml

bug:能进系统但无法进入桌面

解决办法:lib下的liboverlay.so

以上只是简简单单的提到几个常见的问题和解决的方法,可能在移植过程和测试过程中还会有其他的bug需要自行研究解决~

最后,祝你移植ROM成功!请大家不要觉得该移植过程繁琐,因为只有亲身体会了才知道移植ROM其中的乐趣和刷机成功那一刻的兴奋与激动。

嗯,好了,这时一个最简单的移植包就完成了~~~正常来说就可以起机咯~~~赶快刷入试试吧~~~​​​​

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多