设为首页收藏本站

移动叔叔

搜索
查看: 2223|回复: 9
打印 上一主题 下一主题

[教程] 移植ROM的教程

[复制链接]
跳转到指定楼层
#
发表于 2015-12-10 16:11:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

声明:此移植教程为本人移植经验,并非正规、完全正确!只是希望大家共同学习,共同进步!!谢谢大家!勿喷!!


ROM移植原理以及文件简单解析





来自MOZHI同学,感谢MOZHI同学。


一、ROM移植原理

           往简单了说,移植ROM就是将适合的底包(移植包)的UI以及相应的特色功能进行移植,将底包修改后在自己的手机上能够正常的运行!
           ROM运行需要内核启动(boot.img),因此内核在某些移植程度上需要进行修改,但是简单的移植并不会设计到内核的移植,内核移植请大家使用(厨房)进行解包,替换,RC文件修改(后续详解)。
           刷机脚本(META-INF文件夹),作用是将整个ROM包内的文件指定复制到手机ROM(内存)当中的指定位置的一个文本文档,里面规定着相应文件的存放位置,以及相信的权限!也就是我们在REC文件管理器里面能够看到的权限(RW-R-R)!相信大家都能够理解吧!
           SYSTEM文件夹是整个ROM的核心文件,也是我们ROM的组成部分,里面包含着整个ROM的APP程序、底层文件、和相应的驱动程序、ROM框架结构!(后续详解)。
           DATA文件夹,在部分ROM里会存在DATA文件夹,此文件夹是附加文件,也就是说可以再DATA文件夹里面预装相应的程序,来满足开机预装某些程序,当然也必须要刷机脚本的支持!(脚本可以自己编写)

二、简单文件解析

           上述大型文件给大家解释了一下相应的作用,那我们现在来看看最重要的部分文件,system文件夹下的文件作用!

APP-------里面存放着apk相应的程序,也就是默认程序!也可以包含与程序名同名的辅助文件!

bin--------存放着整个ROM运行时需要用到的指定二进制文档!也可以说是整个rom运行时要用到的指定文件!
etc--------存放着与通信、媒体相关的各种文档,如:基带、相机文本、WIFI

fonts------ROM自带字体,中文、英文、数字等在ROM的显示字体!可通过修改文件修改ROM的字体样式!

framework-----这里是最重要的,ROM框架结构和服务框架!某些ROM移植不成功就是这里的原因,如:无法在4.0上移植其他机型的4.1rom,因为框架不同,内核无法正常启动相信的框架来驱动程序!导致ROM无法启动!

lib----------存放着ROM相应程序启动时需要用到的驱动程序,(.so文件)。

media------存放着ROM运行时的开机画面,内置铃声等默认文件,做美化修改这部分也是非常重要的!

res----------存放一些ROM预览图片,对我来说这部分无关精要!(个人理解)

usr----------存放的主要是ROM运行时的按键控制,每个手机的每个按钮代号不同,所以相应的功能也不同,所以移植是需要修改!

vendor------存放的某些底层文件,在移植是需要修改和替换,如MT6577和MT6575底层文件不同,移植是需要格外注意!!

xbin----------无关精要,作用未知,使用移植的即可!

build.prop文件------记录着ROM的版本信息、作者名字、机型等信息,在关于手机部分可以看到!













             对于安卓内核,上面已经讲到是安卓系统启动的关键之处,那么对于某些ROM来说,在经过简单的移植之后无法开机,以及开机直接黑屏,无法启动问题来说,是内核没有移植的原因,内核里面包含着启动时候, 应该先启动的JAR文件以及顺序!因为ROM不同,JAR文件不同,导致某些ROM无法启动,并且无法加载!导致黑屏!!
             首先我们对内核(boot.img)进行解包,相信上次在ROM移植第一篇中学习过的机油啦,并做了作业的机油来说,解包内核已不是大问题了,那么我们现在重点讲一下,内核怎么样去修改,来适应我们的手机!
             内核解包之后,分为两个文件,分别是zImage文件和boot.img-ramdisk文件夹,我们主要修改的文件时boot.img-ramdisk文件夹下面的init.rc文件,此文件可以用TXT文本阅读器打开,也可以用Beyond Compare文件对比工具打开,建议用Beyond Compare
工具打开,本对比工具可同时打开两个文件,分左右显示,可直观的对比出文件的差异,和方便修改!(无需手动输入)
            我们主要需要修改的地方是启动文件。也就是内核的启动项,如:export BOOTCLASSPATH

/system/framework/core.jar:/system/framework/core-

junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system

/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-

xml.jar:/system/framework/filterfw.jar:/system/framework/mediatek-

framework.jar:/system/framework/secondary_framework.jar



也就是以export BOOTCLASSPATH开始的语句,一个内核只有一句(注意):对比你需要修改的内核和自己官方内核的差异,将官方内核中的init.rc文件中的启动项修改后与移植包内核的RC文件启动项相同即可,至此,内核的简单移植就算完成!
            结尾,我们需要将修改后的内核文件(官方)重新打包成boot.img即可!

2、SD卡挂载问题
            对于某些简单内核移植之后,可能寻在SD卡无法挂载问题,请直接搜索SDCARD,将后面的差异之处,修改于官方内核RC文件的数据即可!


3、无SIM卡问题、无信号问题
           此问题的所在之处本人并未找到,但是解决办法,我之后一个!
请在修改启动项之后,将两个内核的对比,将官方内核多余移植内核的数据(语句)添加到移植内核中(如只是单纯数字不同,不修改),之后,直接将移植内核中的RC文件替换官方内核中去,在打包boot.img!

   
以上是本人移植内核的相关经验,第三点最为重要(可直接用第三点移植所有内核,无需1、2点),请勿小视!











本周ROM对于太多的文件替换说的太多,大家也会晕的,所以本人做了相关的图片,自己看吧,图片上有解析的!






已有 1 人评分贡献 收起 理由
bert_zjx + 20

总评分: 贡献 + 20   查看全部评分

9#
发表于 2016-10-12 12:28:37 | 只看该作者
好东西,学习了

 

回复

使用道具 举报

8#
发表于 2016-5-23 05:42:52 来自手机版 | 只看该作者
请楼主提供内核解包工具

 

回复

使用道具 举报

7#
发表于 2016-1-29 16:14:02 | 只看该作者
好东西,顶起来。。。

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

© 2008-2024 移动叔叔. 版权所有,专业的网络售后平台 ( 闽ICP备18006692号-3 )

商务合作点击这里给我发消息|Email:service@mobileuncle.com|手机版|移动叔叔     

GMT+8, 2024-12-2 15:50 , Processed in 0.209784 second(s), 15 queries , Gzip On, Memcache On.

返回顶部