分享

修改rom教程

 hu叶月 2013-02-09

[教程] 修改rom教程 

 
 

 

本文是一个修改rom的教程,所以本文是假设读者都已经懂得刷机了。如果还没学会刷机的可以参考我之前发的一篇刷机教程。
http://bbs./forum.php?mod=viewthread&tid=4390819&fromuid=13568918

本文分三个部分
第一:说明刷rom包的原理
第二:说明一个rom包的结构
第三:修改rom

注:
本文修改的系统是miui,测试手机是google nexus s。
不同rom的结构可能不太一样,本文简单说了下原理所以看完应该会有帮助。


下面开始。

★★★★★刷rom包的原理★★★★★
首先介绍下计算机(手机也是一种计算机)的其中三种存储器分别是RAM、ROM、外部存储器。
RAM就是我们所说的内存,例如你买电脑手机时都会看有多少内存。这种存储器称为动态存储器或者随机存储器。它的特点是可读可写,但是计算机重启后内存里的东西就消失了。
ROM称为静态存储器或只读存储器。它的特点是只读不可写,但是计算机关闭后数据仍然保存。
外部存储器就是平时说的硬盘啊u盘啊什么的,这个特点是可读可写重启后数据仍保存。
对以上三种存储器有所了解后就要开始重点讲解下ROM了。上面说了rom的特点是只读,也就是说你往rom里面放进去东西后里面的东西就不会改变了。而我们手机上的操作系统就是装在rom里面的。在这个地方就有很多人有这个疑问,为什么rom只读不可写为什么我们还能刷机?事实上,随着技术的发展,现在有的rom是可以写的,例如我们手机上的rom称为flash,也就是我们平时说的闪存。这里我觉得rom这个名字有点误导人,因为rom是Read Only Memory的简称,延续这个名字容易让人误以为不可写。总之现在手机上的rom也是可写的,然后厂商把rom的一部分划出来安装手机的操作系统和自带的应用,剩下的rom留给用户自己装其它的应用或放自己的其它文件使用。这也就可以解释为什么我们买来的手机容量一般都没有手机参数写的那么大,例如16G的买来一看就剩下15点多。因为有一部分被系统占用了。而且rom中作为存放操作系统的那一部分用户是没有权限访问的,除非通过特殊的方式,也就是我们常说的刷机,那这么说的话大家就明白为什么刷机也叫刷rom了吧?

★★★★★一个rom包的结构★★★★★
我从miui官网下了一个rom包,解压下来后如图。

rom包结构.png
META-INF里面是一些升级脚本和ROM签名。
recovery里面是我们刷机在recovery时要用到的一些文件。
system是这个rom的具体内容。
boot.img是内核文件。

这个教程我们想要达到的目的就是修改rom,所以我们只要看system这个文件夹就可以了。
把system打开以后如下图。

system.png
下面简单说明下这些文件夹。
app:系统自带的应用。
bin:android系统本地的一些可执行的程序。
etc:android系统配置文件。
fonts:字体样式和字体库。
framework:android系统框架。
lib:动态链接库。
media:铃声、开机动画之类的媒体文件。
usr:用户数据。
vendor:厂商信息。
xbin:系统管理用的可执行程序。
build.prop:手机信息。

★★★★★修改rom★★★★★
这一部分用三个例子让大家熟悉下rom包的结构和修改的方式,然后再自己扩展。
三个例子分别是:
1.修改原始语言和时区
2.修改界面
3.删除和新增自带应用

1.修改原始语言和时区
这个非常简单,打开system文件夹下的build.prop修改就可以了。
然后修改
ro.product.locale.language=zh
ro.product.locale.region=CN
当然如果是miui可能本来就修改好了,但是如果是android原生的系统就是原生时间。
关于修改build.prop建议大家使用一个文本编辑器UltraEdit。因为你用记事本打开build.prop的话是这个样子。


notepad.png

而如果用UltraEdit打开的话是这个样子。

ultraedit.png

哪个比较直观就不用我多说了,一目了然。所要改的那两行属性我也在上图中做了标记。
当然还有很多东西可以改,具体还能改什么可以上网搜一下build.prop所有属性的解释。因为这个教程只是修改几个东西当例子,然后大家从中熟悉下修改的原理和基本操作,大家再自行扩展。不可能什么都改一遍写出来。相信聪明的你举一反三的能力是有的。

2.修改界面
这个也很简单,把system\framework\framework-res.apk用winRAR的方式打开,然后解压出来,把res\drawable-hdpi下的图片换成你自己喜欢的,至于每个图片是干什么的你同样可以网上搜一下。改完之后拖回去,记住这里不是压缩后把后缀改成apk,而是用winRAR原来的framework-res.apk,然后把想替换的新图片拖进去替换了就行了。

3.删除和新增自带应用
删除很简单,把system\app打开,把你不想要的app文件删掉,通常包括一个apk文件和odex文件。至于哪些可删,网上有人列出了可精减的apk列表。自己搜下吧。
至于添加自带应用就比较复杂了,可不是把apk文件拖进去就行了。我原来也试过把只是简单的把apk拖进去,但是安装以后发现,自己添加的信应用一打开就停止运行了。后来我发现如果把你想新增的apk文件的lib文件夹提取出来放到rom的system\lib里就可以正常运行。这样我就有个推测,因为一般的应用都是把自己的lib(前面在rom结构中提到lib是动态链接库)压缩在一起。然后应用运行要用时提取自己的lib文件。然后我发现rom的app文件夹里所有apk都没有lib文件。那我就推测android是所有自带的app都统一去system下的lib调东西。所以如果你想自己新增自带应用的话就要把apk文件夹的lib文件提取出来,把里面所有的.so抽出来放到rom的lib里。这样新增的自带应用才能正常运行。但是自己这样添加自带应用又会出一个新问题。我以有道笔记这个app为例。我把它的lib解压后如图。
youdao.png
它里面有两个文件夹。我们知道手机不同种类的cpu架构是不同的,那么app就必须提供支持不同平台的so文件。然后放在不同文件夹。但是一般来说你文件命名肯定是相同的。不信你可以试着把一个apk的lib文件夹下的每个文件夹看一下,都会发现虽然大小不一样但是名字一样的文件。而你要把这些文件都抽出来放在rom的lib里,那么肯定会造成同名覆盖问题。所以我建议如果非要自己新增一个又有同名覆盖情况,你就保留armeabi文件夹下的文件就行了。

还有一个问题就是,rom自带的app都有一个大部分都有一个对应的odex文件。
关于什么是odex文件和怎么制作odex文件,下面这篇帖子已经写得很明白。
http://122.226.111.101/thread-13537306-1-435-1.html

最后关于新增自带应用我多说两句,其实我觉得新增自带应用是特别多此一举的事情,应用不能等装完rom以后再自己装吗?这样还方便卸载,而且自己新增还这么麻烦。当然如果谁那么自信能做出什么牛逼哄哄的rom想推荐给自己的同学啊女友啊老妈啊用又想自带些猥琐应用的话就自己新增一下吧。

教程到此结束,谢谢大家!

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多