編寫: lockeandroid
前言:shell
本文爲locke原創文章,請尊重做者的勞動成果,轉載請註明出處:http://user.qzone.qq.com/401389373/blog/
看來須要工具包的網友還很多,但一個個的分發比較費事,特找了個空間將之上傳,供有須要的人下載,地址:app
千腦在線框架
本教程推出未多久時間,不少熱門網站和論壇都進行了轉載,本人非常欣慰,這是對我勞動成果的確定。但也有個別的人將上面一段話和文章最後的簽名刪除了,更有人打出了「原創」字眼,本人在此BS一下這類人。本教程雖然內容不算多,但裏邊簡簡單單的一處修改,本人有些都要花費很長時間、一次次嘗試、一次次的受着機子變「磚頭」的結果作出來的,這些人簡簡單單的一個拷貝、粘貼命令就把成果佔爲己有,實在有點不厚道。再次BS之!ide
目錄:工具
瑞芯微android固件包介紹oop
1、解包、打包佈局
2、固件升級開發工具
3、固件修改
1. 固件精減、添加APK軟件
2. 提取Root權限
3. 修改用戶分區大小
4. 修改設置中「關於MID」中的機型型號
5. 美化界面
6. 美化桌面
瑞芯微android固件包介紹
瑞芯微的android固件包分兩種:
一種爲量產升級包(暫且如此稱呼吧,PS:其實稱之爲開發包較爲合適,由於是使用開發工具進行升級。),使用量產升級工具RKAndroidTool.exe進行升級,量產升級包的文件包含:HWDEF、package-file、parameter、recover-script、Rock28Boot(L).bin、update-script和一個Image文件夾,裏邊又包含boot.img、 kernel.img、 misc.img、 recovery.img 、system.img五個鏡像文件。System.img包含全部用戶資源,大部分狀況下修改system.img文件就能達到咱們的目的。本文也是重點圍繞system.img的修改。
另外一種爲用戶升級包(也暫且如此稱呼吧),即將上述量產升級包的文件用工具打包成一個文件――update.img,使用用戶升級工具RKAndroidDM.exe進行升級。此文件包需經過解包成量產升級包後才能修改,修改後再打包成update.img進行升級。
1、解包、打包
對於update.img的解包、打包,需用到附件「打包解包工具」中的AFPTool.exe、mkupdate.bat、unpack.bat三個文件,其中unpack.bat爲解包工具,mkupdate.bat爲打包工具。將用戶升級包update.img和上述三個文件放在同一目錄下,雙擊unpack.bat後,就能夠將用戶升級包解包成6個文件和一個Image文件夾,即和量產升級包徹底相同的文件。此時可對相應的文件進行修改,修改完成後,再雙擊mkupdate.bat,會在Image文件夾下產生一個update.img,此文件就是打包後新生成的用戶升級包文件。
對於system.img的解包、打包,需用到cramfsck、mkcramfs兩個工具,此img文件和工具需在Linux(Ubuntu、RedHat等)系統下操做和使用,來進行解包、打包,cramfsck爲解包工具,mkcramfs爲打包工具。
先經過本地硬盤、U盤或者Live CD啓動到Linux下(Linux相關知識和安裝不在本篇介紹範圍內,請自行Google),而後將system.img、cramfsck、mkcramfs三個文件拷貝到系統的root文件夾下。(有些Linux系統對掛載的其它分區或磁盤兼容性很差,因此拷貝到系統分區進行操做可減小出問題的可能性,本文涉及到Linux部分的操做以BackTrack3操做系統爲示例。部分人反映用Ubuntu的精簡等版本時用不了已編譯好的cramfsck和mkcramfs,因此在教程包中又放入了一個deb的文件,在啓動到Linux後雙擊就能夠像Windows同樣安裝它了。)
打開一個shell,在shell中輸入:
cramfsck -x system system.img
對system.img文件進行解包,執行完成後,會產生一個名爲system的文件夾,以下圖所示:
也能夠採用如下方法進行解包,原理就是mount這個鏡像文件,而後再拷貝出來,命令以下:
mkdir system
sudo mount -t cramfs -o loop system.img system
tar cvzf system.tgz system
sudo umount system
rm -r system
tar xzvf system.tgz
用這個方法的好處是能夠避免某種狀況下出錯的可能,第一種方法在某些狀況下會形成某些文件損壞,有碰到過。
解包後的System文件夾內包含9個文件夾和1個文件,簡單說明以下:
/system/app 系統應用程序存放目錄
/system/bin 系統的本地程序,是binary二進制的程序,裏面主要是Linux系統自帶的組件。
/system/etc 系統的配置文件,好比APN接入點設置等核心配置。
/system/fonts 字體文件夾。
/system/framework 主要是一些核心的文件,從後綴名爲jar能夠看出是系統平臺框架。
/system/lib 存放的主要是系統底層庫,如平臺運行時庫。
/system/media 鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音
/system/usr 用戶文件夾,包含共享、鍵盤佈局、時間區域文件等。
/system/xbin 存放系統管理工具,他們都是爲系統管理員準備的,是一些系統管理和配置工具。
/system/build.prop 屬性文件,「關於MID」中所顯示的軟件版本、內核、機型等信息。
經過上面進行簡單的介紹,相信你已有了一個大概的瞭解了。
此時可對system文件夾下的文件進行其它修改了,好比提取root權限、固件精減、APK替換修改等操做。
修改完成後,須要對system文件夾進行打包,在shell中輸入:
mkcramfs system system02.img
(爲了便於區分原先的img文件,因此建議從新生成的文件不要與原文件名同樣。)
此時會在root目錄下生成一個新文件system02.img,這個文件就是咱們修改好並從新打包OK的文件了。
此時,對於update.img和system.img兩個文件的解包、打包操做就介紹完了。對於system.img和相應的文件是否須要打包成用戶升級包update.img就看各位是否有須要了。
2、固件升級
固件升級有兩種工具可實現(其實還有第三種升級――即經過MID本機進行升級,不過須要原生軟件和硬件支持才能夠實現,目前發現上市的機子還無此功能。因此略過…),即量產升級、用戶升級。
量產升級:將量產升級包的6個文件和一個文件夾,放入../升級工具/量產升級工具_RKAndroidTool/rockdev文件夾下,而後打開量產工具RKAndroidTool.exe,以下圖所示:
(若有須要勾選Loader、Backup選項,對於軟件跨版本較大或修改過度區等狀況可勾選Loader,若是你的MID沒有Recover功能,Backup選項無需勾選。題外話太多了,現轉移到正題。)
關機狀態下長按ESC鍵或菜單鍵(視機型而定,具體請自行查找相應信息)的同時鏈接PC,按提示安裝驅動(首次使用),驅動路徑指向.. /升級工具/rk28usb‐Driver,安裝好驅動後按「執行」便可完成升級。
注意:若是是Vista、Windows7系統需用管理員權限運行本工具,不然會提示「測試設備失敗」,形成升級失敗。
用戶升級:打開用戶升級工具RKAndroidDM.exe,以下圖所示:
點擊「…」按鈕,選擇電腦中要升級的用戶升級文件update.img,而後按量產升級的方法鏈接你的MID,提示找到設備後按「升級」按鈕進行升級,完成後提示「升級成功」後拔掉USB線從新開機便可。
3、固件修改
前面講解了那麼多了,前戲應作的很足了,如今開始介紹各位同鞋最爲關心滴事、最最爲想作滴事情,我再次手把手滴開始教各位同鞋鳥,但願能和你們一塊兒達到目的,衝向高潮。吼……!!!
1,固件精減、添加APK軟件
將system.img解包,解包後將../system/app目錄下的不須要的APK文件進行刪除、修改、替換,以製做適合本身的固件包,對於app目錄內不清楚用途的APK文件,請勿隨意刪除,以避免引發沒必要要的問題。
注意:聽說個別APK軟件需自帶的庫文件支持才能正常運行,此時可用WinRAR等壓縮軟件將APK文件打開(將.apk後綴改爲.zip,而後用壓縮軟件打開便可),從裏邊找到後綴爲.so的文件,而後放入../system/lib文件夾下便可。
修改完成後,而後進行打包、升級、測試。
2,提取Root權限
將system.img解包,解包後將「取root權限文件」目錄中的Superuser.apk、su兩個文件分別放進下列目錄:
Superuser.apk ---> ../system/app
su ---> ../system/bin
打開一個shell,而後用chmod 6755修改文件的權限,如圖示。
Chmod 6755 /system/app/Superuser.apk
Chmod 6755 /system/bin/su
上述命令需注意大小寫,不然有可能會出錯。修改完成後打包便可。
我開始在驗證過程當中,因使用了較老的root explorer版本根本不能進入資源管理器,因而更換了最新版V2.94,是能進資源管理器界面了,可是卻不能修改或刪除system下的文件,可能有人會懷疑這是否真正的取得了root權限?我能夠很負責的告訴你,已經取得了root權限,由於運行drocap2這類root權限的軟件是灰常正常滴。
嗯,其實這裏又涉及到一個專業知識了,請坐好捏,哎,後面那位同鞋別看別人了,說的就是你。如今仔細聽我講解:
瑞芯微android系統固件的system分區採用的是cramfs文件系統。
cramfs文件系統是一個壓縮式的文件系統,它並不須要一次性地將文件系統中的全部內容都解壓縮到內存之中,而只是在系統須要訪問某個位置的數據的時侯,立刻計算出該數據在cramfs文件系統中的位置,將其實時地解壓縮到內存之中,而後經過對內存的訪問來獲取文件系統中須要讀取的數據。cramfs文件系統中的解壓縮以及解壓縮以後的內存中數據存放位置都是由cramfs文件系統文件系統自己進行維護的,用戶並不須要瞭解具體的實現過程,所以這種方式既方便,又節省了存儲空間。cramfs文件系統的數據都是預先通過處理、打包的,這種系統是一種只讀、不支持寫操做的文件系統,在刷到機器裏後,這個分區就是隻讀的,不能作任何更改。因此,刷機後是不能對這個系統進行修改的,只能在刷機前對system.img進行解包、修改,以達到咱們的目的。
3, 修改用戶分區大小
部分同鞋使用了MID一段時間後,就會爲用戶區空間過小裝不了幾個軟件而發愁,其實,你不用發愁,只要稍稍修改一下兩個文件就能夠將分區加大。如今出產的MID通常都是配備2GB以上的內存,劃個幾百M至1G都不會太影響本機使用的,再者如今TF卡那麼便宜,都是標配2~4G以上的容量了。因此即使將用戶區再劃大些都不會有太大的影響。
(題外話:還有同鞋在尋找APP2SD的功能,我的建議不如修改一下這兩個文件,將用戶區劃大一些來得實在,一來在本機上讀取軟件穩定性會高些,二來不會因TF卡的問題導至軟件出問題嘛!)
言歸正傳:將用戶升級包update.img解包(若是已是量產升級包,略過此解包操做),找到其中的HWDEF、parameter兩個文件並備份。再用UE(UltraEdit32,其實用記事本也能夠,不過看起比較亂)修改兩個文件的分區偏移量和分區大小,是以16進製表示,前一個分區的偏移量和大小加起來就是後面一個分區的偏移量,咱們需讓用戶分區增大,因此只修改用戶分區便可,只需修改userdata、user兩個分區的偏移量和大小便可。
A.修改HWDEF文件:
用UE打開HWDEF,找到以下部分的代碼(請注意紅色部分數據):
mtd_id=rk28xxnand
#Format: part_name offset:size
parameter 0x00000000:0x00001000:fh
misc 0x00001000:0x00001000:f
kernel 0x00002000:0x00003000:f
boot 0x00005000:0x00002000:f
recovery 0x00007000:0x00003000:f
system 0x0000A000:0x0001E000:f
backup 0x00028000:0x00026000:
cache 0x0004E000:0x0001E000:
userdata 0x0006C000:0x0001E000:
user 0x0008A000:0xFFFFFFFF:
END
簡單解釋一下,上面的userdata分區表示:偏移量爲0x0006C000,分區大小爲:0x0001E000,好比咱們需將使用空間由原來的123M增大一倍到246M,即0x0001E000+0x0001E000=0x0003C000,那麼,下一個分區user的偏移量就變成6C000+3C000=0x000A8000,修改後新的數據以下:
userdata 0x0006C000: 0x0003C000:
user 0x000A8000:0xFFFFFFFF:
修改後保存。對HWDEF的修改完成了。
B.修改parameter文件
再用UE打開parameter,找到最後一行,其部分代碼以下:
CMDLINE: noinitrd c,115200n8n androidboot.c init=/init root=/dev/mtdblock2 mem=128M@0x60000000 mtdparts=rk28xxnand:0x00001000@0x00001000(misc),0x00003000@0x00002000(kernel),0x00002000@0x00005000(boot),0x00003000@0x00007000(recovery),0x0001E000@0x0000A000(system),0x00026000@0x00028000(backup),0x0001E000@0x0004E000(cache), 0x00040000 @0x0006C000(userdata),-@ 0x000AC000 (user)
此段代碼@前面表示分區大小,@後面表示偏移量。userdata前面的6個分區大小和偏移量都能和HWDEF文件中的一一對應起來,但userdata的分區大小明顯要大不少,暫不明白爲什麼要加大一些。查看過幾個不一樣機型的這些文件,大小也有差距,在22000-62000(16進制)之間;爲了避免出問題,咱們也依照那樣作吧,因此咱們也在userdata空間的大小上面也加上22000至62000之間的一個數值吧。
因此,此處userdata的分區大小爲:3C000(擴容後的分區大小)+22000=5E000,那下一個分區user的偏移量也變成了:5E000(新分區大小)+6C000(偏移)=CA000。修改過的數據以下:
0x0005E000@0x0006C000(userdata),-@0x000CA000(user)
修改後保存。對parameter的修改也完成了。用剛纔改好的兩個文件替換原先的兩個文件,而後從新打包、升級。
不一樣機型分區大小可能會有差異,因此附件中放有原始的和修改好的兩個文件,以供參考!此文件僅供參考,請勿直接替換,出了問題概不負責!
4,修改設置中「關於MID」中的機型型號
將system.img進行解包,解包後在system文件夾下找到build.prop
將build.prop文件用UE打開,找到ro.product.model=sdkDemo一行,將其中的sdkDemo改爲你想要顯示的文字,好比BM999,修改後保存,而後從新打包燒錄便可。
5,美化界面
這個又涉及到APK文件的修改了,這部分的教程就不做過多的介紹了,有須要的同鞋能夠上網去Google下相關資料,大把的教程可供參考。
將system.img進行解包,解包後在../system/framework文件夾下找到framework-res.apk,將.APK後綴更名爲.zip,而後將其中的assets、res兩個文件夾解壓出來開始咱們的美化工做。要注意修改後的圖片分辨率大小和圖片格式要與原來保持一致,不然會出錯的哦。
A.界面美化
找到解壓後的下列兩個目錄,這兩個目錄存放全部界面的系統圖標,可對須要修改的界面小圖標進行美化:
../framework-res/res/drawable
../framework-res/res/drawable-land
B.修改開機LOGO(Android啓動時,出現閃動的ANDROID字樣的動畫圖片)
Android 的系統登陸動畫相似於Windows系統的滾動條,是由前景和背景兩張PNG圖片組成,這兩張圖片也是位於../system/framework/framework-res.apk文件當中。前景圖片(android-logo-mask.png)上的Android文字部分鏤空,背景圖片(android-logo-shine.png)則是簡單的紋理。系統登陸時,前景圖片在最上層顯示,程序代碼控制背景圖片連續滾動,透過前景圖片文字鏤空部 分滾動顯示背景紋理,從而實現動畫效果。以相同的原理修改或替換下面兩張圖片便可達到目的。
../framework-res/assets/p_w_picpaths/android-logo-mask.png
../framework-res/assets/p_w_picpaths/android-logo-shine.png
android-logo-mask.png :Android默認的前景圖片,文字部分鏤空,大小256×64
android-logo-shine.png :Android默認的背景圖片,有動感效果,大小512×64
美化完成後,將修改過的圖片替換掉APK文件中相應的文件,而後將APK文件中META-INF文件夾內的CERT.SF、CERT.RSA兩個文件刪除,而後用簽名工具從新簽名。再將簽名後的APK文件替換掉原先的文件,以後從新打包成system.img並用工具升級便可。
6,桌面美化
感受桌面默認的公版壁紙、搜索條、快捷鍵等圖標太難看?沒問題,把它都換了吧。
將system.img進行解包,解包後在../system/app文件夾下找到Launcher.apk,將.APK後綴更名爲.zip,而後將其中的res文件夾解壓出來,將須要美化的圖片進行美化、替換,修改好後按照上面的方法將文件替換、簽名、打包再升級便可。
基礎篇教程完畢!敬請關注進階篇。因本人水平有限,教程中不免會有錯誤之處,歡迎指正!