【转】ANDROIDROM制作(一)——ROM结构介绍、精简和内置、一般刷机过程
作为对Rom制作的一个总结,本节主要介绍以下内容:
1、Rom介绍
2、Rom文件结构
3、app的精简与内置
4、Recovery简介
5、radio包简介
6、一般刷机过程、刷机过程中可能造成刷机失败的注意事项
7、如何实现Rom的基本美化
8、Rom包签名
------------------------
1、我们经常说的刷ROM是刷系统的意思,但是ROM的原意并不是这样,ROM的全称是read only memory只读储存器,正因为它是“只读”的,所以系统文件通常动会存储在手机ROM里,但这个只读是有条件限定的,通常情况下我们只能读,但在特殊情况下我们可以对ROM进行写操作,往ROM里写入新的系统文件的过程,就是刷机,也称“刷ROM”,而把系统文件包叫做了ROM,这是一种俗称,所以网上找不到能支持这个含义的英文全称
简单讲一下ROM包这个概念的历史,被人们熟识的刷系统应该是在WM平台上开始多起来的,当时还出现了一批制作ROM的专业工作人员,当然WM我接触的少,就不多说了,免得说错误导大家,但是刷机这个概念真正火起来还是在Android平台,出现了更多的Rom包制作者,或专职或出于爱好,也有很多经常刷机的发烧友,不过还是提醒一下,刷机也是有一定风险的,需谨慎对待!
2、关于Rom包的文件结构,一般Rom文件包下有以下文件:
data
META-IN
system
boot.img
data:顾名思义,是一个存储数据的文件夹,如安装第三方app会保存在data/data/app目录下
META-INF:内含升级脚本及ROM的签名
System:系统文件夹
Boot.img:android内核文件
System文件夹下还有以下文件或文件夹:
app:放置系统软件的目录,所以内置软件就是在制作Rom包的时候把apk文件放入此文件夹
bin:Android系统本地程序,主要是Linux系统自带的组件
Etc文件夹:放置android系统配置文件,如apn文件等
Fonts文件夹:放置字体文件,包含标准字体和粗体、斜体、中文、英文等
Framework文件夹:放置android系统平台框架文件及布局控制
Lib文件夹:放置系统底层库及运行库文件
Media文件夹:放置系统铃声音乐文件夹及开机动画文件,需要说明一下开机动画其实是多张静态图片的帧动画效果
Tts文件夹:放置手机的语音文件
Usr文件夹: 放置用户文件,包含共享、键盘布局、时间区域文件等
Vendor文件夹:放置ROM厂商定制内容
Xbin文件夹:放置用户系统支持程序文件
Build.prop文件:系统属性配置文件,如我们在设置-关于里看到的内容
3、了解了Rom的结构,精简和内置就不是问题了,一般的精简就是删除system/app和data/data/app两个目录下的多余文件,如国内无法使用的youtube,facebook等应用,而内置就是把想要内置的应用放到system/app目录下,当然如果用户取得root权限,还是可以删掉系统自带应用的
4、recovery这里主要指恢复的意思,一般说recovery界面是一个可以实现刷机等多种操作功能的一个工程界面,功能类似windows下的Ghost,可以实现系统备份、恢复、清理数据等操作
5、radio这里指无线电通讯,手机的无线电通讯硬件模块出厂时就已经内置,但软件却可以更新,可以理解为电脑网卡已经内置了,但是我们却可以更新驱动程序,radio包的好坏影响着手机通话质量、上网速度、联网稳定性等更网络相关的内容,所以如果手机信号没有问题,不要轻易地刷radio,有人又把刷radio称作刷“基带”、刷信号包,可以统统理解为升级了网卡驱动...
6、不同厂家的手机刷机过程各有不同,这里直说已经安装recovery的情况,如果没有安装recovery,随便google一下就有一大堆内容,不做赘述
下载Rom包,是一个.zip文件,简单的方法是把Rom命名为update.zip并放入sd卡的根目录,这样进入recovery界面时会提示是否升级,音量上键选择升级即可,当然也可以不改变Rom包文件名,进入Recovery界面选择Flashzipfromsdcard或Flashupdateimage,如果是中文版的recovery就是从sd卡中选择更新,总之大概是这个意思,然后选择Rom包的.zip文件确认即可
进入recovery的方法各有不同,HTC手机一般是关键后按音量下键+开机键,可以根据自己的手机型号上网查一下
一般来说,刷机也是有一定风险的,也经常有人把手机刷成砖或半砖,这些主要是由于不当的操作造成的,一般我们通过recovery刷Rom是不会造成太严重的结果,或者说如果有什么结果可以通过刷recovery解决,但如果是由于操作不当导致无法进入hboot界面那基本就算成砖了,这里不多说,主要是强调一下刷机的良好习惯,在刷机之前先进入recovery将现有系统做一个备份,防止刷机后出现问题,如果真不幸出现问题也可以通过备份恢复,备份后通过recevery对系统进行一个彻底的wipe,删掉多余的文件,然后在执行刷机操作,这样一般是不会有什么问题的
7、简单的美化,主要是替换资源,在system/framework目录下,有一个framework-res.apk文件,解压后发现里面全是各种资源文件,其中在res目录下,以drawable开头的文件夹下都是跟图片相关的资源,可以通过替换相同文件名的图片文件实现美化的目的,本人比较习惯原生的UI,所以这里不多讲
8、一般来说只是精简或是内置app的话不需要重新对Rom包进行签名,但有些时候需要对Rom签名的时候可以上网搜找一下Rom签名工具,通过简单的批处理就可以实现,其实就是用java的keytool命令进行签名,只不过是有了工具,大家就不愿意去敲命令,就像电脑越来越普及反而会提笔忘字一样!
这节的内容就说到这里,如果你也想有一个属于自己专有的Rom的话可以动手操作一下,不过还是提示刷机有风险
修改步骤:
1修改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直接就不能刷了。如何查看分区表信息,可以直接找度受。或者等小编后续的教程。
2、替换boot.img
将修改好的G22的boot.img(不会修改boot的机油可以直接用相同UI的ROM的boot.img)替换到G14的XUI官方ROM里面
3、签名打包
from:https://www.iteye.com/blog/dengzhangtao-1542895