本文是一個修改rom的教程,所以本文是假設(shè)讀者都已經(jīng)懂得刷機了。如果還沒學(xué)會刷機的可以參考我之前發(fā)的一篇刷機教程。 http://bbs.hiapk.com/forum.php?mod=viewthread&tid=4390819&fromuid=13568918
本文分三個部分 第一:說明刷rom包的原理 第二:說明一個rom包的結(jié)構(gòu) 第三:修改rom 注: 本文修改的系統(tǒng)是miui,測試手機是google nexus s。 不同rom的結(jié)構(gòu)可能不太一樣,本文簡單說了下原理所以看完應(yīng)該會有幫助。
下面開始。
★★★★★刷rom包的原理★★★★★ 首先介紹下計算機(手機也是一種計算機)的其中三種存儲器分別是RAM、ROM、外部存儲器。 RAM就是我們所說的內(nèi)存,例如你買電腦手機時都會看有多少內(nèi)存。這種存儲器稱為動態(tài)存儲器或者隨機存儲器。它的特點是可讀可寫,但是計算機重啟后內(nèi)存里的東西就消失了。 ROM稱為靜態(tài)存儲器或只讀存儲器。它的特點是只讀不可寫,但是計算機關(guān)閉后數(shù)據(jù)仍然保存。 外部存儲器就是平時說的硬盤啊u盤啊什么的,這個特點是可讀可寫重啟后數(shù)據(jù)仍保存。 對以上三種存儲器有所了解后就要開始重點講解下ROM了。上面說了rom的特點是只讀,也就是說你往rom里面放進去東西后里面的東西就不會改變了。而我們手機上的操作系統(tǒng)就是裝在rom里面的。在這個地方就有很多人有這個疑問,為什么rom只讀不可寫為什么我們還能刷機?事實上,隨著技術(shù)的發(fā)展,現(xiàn)在有的rom是可以寫的,例如我們手機上的rom稱為flash,也就是我們平時說的閃存。這里我覺得rom這個名字有點誤導(dǎo)人,因為rom是Read Only Memory的簡稱,延續(xù)這個名字容易讓人誤以為不可寫。總之現(xiàn)在手機上的rom也是可寫的,然后廠商把rom的一部分劃出來安裝手機的操作系統(tǒng)和自帶的應(yīng)用,剩下的rom留給用戶自己裝其它的應(yīng)用或放自己的其它文件使用。這也就可以解釋為什么我們買來的手機容量一般都沒有手機參數(shù)寫的那么大,例如16G的買來一看就剩下15點多。因為有一部分被系統(tǒng)占用了。而且rom中作為存放操作系統(tǒng)的那一部分用戶是沒有權(quán)限訪問的,除非通過特殊的方式,也就是我們常說的刷機,那這么說的話大家就明白為什么刷機也叫刷rom了吧?
★★★★★一個rom包的結(jié)構(gòu)★★★★★ 我從miui官網(wǎng)下了一個rom包,解壓下來后如圖。
META-INF里面是一些升級腳本和ROM簽名。 recovery里面是我們刷機在recovery時要用到的一些文件。 system是這個rom的具體內(nèi)容。 boot.img是內(nèi)核文件。
這個教程我們想要達到的目的就是修改rom,所以我們只要看system這個文件夾就可以了。 把system打開以后如下圖。
下面簡單說明下這些文件夾。 app:系統(tǒng)自帶的應(yīng)用。 bin:android系統(tǒng)本地的一些可執(zhí)行的程序。 etc:android系統(tǒng)配置文件。 fonts:字體樣式和字體庫。 framework:android系統(tǒng)框架。 lib:動態(tài)鏈接庫。 media:鈴聲、開機動畫之類的媒體文件。 usr:用戶數(shù)據(jù)。 vendor:廠商信息。 xbin:系統(tǒng)管理用的可執(zhí)行程序。 build.prop:手機信息。
★★★★★修改rom★★★★★ 這一部分用三個例子讓大家熟悉下rom包的結(jié)構(gòu)和修改的方式,然后再自己擴展。 三個例子分別是: 1.修改原始語言和時區(qū) 2.修改界面 3.刪除和新增自帶應(yīng)用
1.修改原始語言和時區(qū) 這個非常簡單,打開system文件夾下的build.prop修改就可以了。 然后修改 ro.product.locale.language=zh ro.product.locale.region=CN 當然如果是miui可能本來就修改好了,但是如果是android原生的系統(tǒng)就是原生時間。 關(guān)于修改build.prop建議大家使用一個文本編輯器UltraEdit。因為你用記事本打開build.prop的話是這個樣子。
而如果用UltraEdit打開的話是這個樣子。
哪個比較直觀就不用我多說了,一目了然。所要改的那兩行屬性我也在上圖中做了標記。 當然還有很多東西可以改,具體還能改什么可以上網(wǎng)搜一下build.prop所有屬性的解釋。因為這個教程只是修改幾個東西當例子,然后大家從中熟悉下修改的原理和基本操作,大家再自行擴展。不可能什么都改一遍寫出來。相信聰明的你舉一反三的能力是有的。
2.修改界面 這個也很簡單,把system\framework\framework-res.apk用winRAR的方式打開,然后解壓出來,把res\drawable-hdpi下的圖片換成你自己喜歡的,至于每個圖片是干什么的你同樣可以網(wǎng)上搜一下。改完之后拖回去,記住這里不是壓縮后把后綴改成apk,而是用winRAR原來的framework-res.apk,然后把想替換的新圖片拖進去替換了就行了。
3.刪除和新增自帶應(yīng)用 刪除很簡單,把system\app打開,把你不想要的app文件刪掉,通常包括一個apk文件和odex文件。至于哪些可刪,網(wǎng)上有人列出了可精減的apk列表。自己搜下吧。 至于添加自帶應(yīng)用就比較復(fù)雜了,可不是把apk文件拖進去就行了。我原來也試過把只是簡單的把apk拖進去,但是安裝以后發(fā)現(xiàn),自己添加的信應(yīng)用一打開就停止運行了。后來我發(fā)現(xiàn)如果把你想新增的apk文件的lib文件夾提取出來放到rom的system\lib里就可以正常運行。這樣我就有個推測,因為一般的應(yīng)用都是把自己的lib(前面在rom結(jié)構(gòu)中提到lib是動態(tài)鏈接庫)壓縮在一起。然后應(yīng)用運行要用時提取自己的lib文件。然后我發(fā)現(xiàn)rom的app文件夾里所有apk都沒有l(wèi)ib文件。那我就推測android是所有自帶的app都統(tǒng)一去system下的lib調(diào)東西。所以如果你想自己新增自帶應(yīng)用的話就要把apk文件夾的lib文件提取出來,把里面所有的.so抽出來放到rom的lib里。這樣新增的自帶應(yīng)用才能正常運行。但是自己這樣添加自帶應(yīng)用又會出一個新問題。我以有道筆記這個app為例。我把它的lib解壓后如圖。 它里面有兩個文件夾。我們知道手機不同種類的cpu架構(gòu)是不同的,那么app就必須提供支持不同平臺的so文件。然后放在不同文件夾。但是一般來說你文件命名肯定是相同的。不信你可以試著把一個apk的lib文件夾下的每個文件夾看一下,都會發(fā)現(xiàn)雖然大小不一樣但是名字一樣的文件。而你要把這些文件都抽出來放在rom的lib里,那么肯定會造成同名覆蓋問題。所以我建議如果非要自己新增一個又有同名覆蓋情況,你就保留armeabi文件夾下的文件就行了。
還有一個問題就是,rom自帶的app都有一個大部分都有一個對應(yīng)的odex文件。 關(guān)于什么是odex文件和怎么制作odex文件,下面這篇帖子已經(jīng)寫得很明白。 http://122.226.111.101/thread-13537306-1-435-1.html
最后關(guān)于新增自帶應(yīng)用我多說兩句,其實我覺得新增自帶應(yīng)用是特別多此一舉的事情,應(yīng)用不能等裝完rom以后再自己裝嗎?這樣還方便卸載,而且自己新增還這么麻煩。當然如果誰那么自信能做出什么牛逼哄哄的rom想推薦給自己的同學(xué)啊女友啊老媽啊用又想自帶些猥瑣應(yīng)用的話就自己新增一下吧。
教程到此結(jié)束,謝謝大家!
|