移动叔叔
标题:
移植ROM的教程
[打印本页]
作者:
15015513869
时间:
2015-12-10 16:11
标题:
移植ROM的教程
声明:此移植教程为本人移植经验,并非正规、完全正确!只是希望大家共同学习,共同进步!!谢谢大家!勿喷!!
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内核简单移植!避免SD卡挂载失败、无信号问题!
)
对于安卓内核,上面已经讲到是安卓系统启动的关键之处,那么对于某些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移植之文件替换!
本周ROM对于太多的文件替换说的太多,大家也会晕的,所以本人做了相关的图片,自己看吧,图片上有解析的!
作者:
toosimple
时间:
2016-1-29 16:14
好东西,顶起来。。。
作者:
Ruty00
时间:
2016-5-23 05:42
请楼主提供内核解包工具
作者:
bold123
时间:
2016-10-12 12:28
好东西,学习了
欢迎光临 移动叔叔 (http://bbs.ydss.cn/)
Powered by Discuz! X3.2