喜愛自由、自然、自在。

2012-01-18

Android 系統分區結構

山寨安卓手機,  買了一個星期,  見沒有退貨換機的必要,  便忍不住 "Root" 了.  最忍不住的,  是內置了硬要進入 Great Firewall 的 UC Browser 7.9,  和大陸"安卓市場",  鏟不走,  而且一開機便見有個 process 在,  不知有否做些壞事.

Root 機的原理和方法,  網上大量資料,  不重覆了.  我使用最流行的 SuperOneClick,  它 Root 成功後問你要不要裝 Busybox,  答是,  便沒煩惱了.

值得一提是,  Root 機後做 Factory Reset,  也仍在 Rooted 狀態的.

然後要搞事,  先要明白 Android 系統分區和一些 folder 的用法.

基本出廠把內存分了 /system,  /data,  /cache  3 個 partition,  而一般顯示 free storage 是指 /data 剩量,  所以買機說有 512M ROM,  卻見到少很多.  就我部機來說,   /data 全區約是 230M,  剩量當然更少了.

/system 是放置 Android 系統和出廠時內置的軟件,  Factory Reset 也不會改變的部份.  特別要知道的是 /system/app 就是放內置軟件的地方.

/data 是用家開始使用後,  安裝軟件和放置資料的地方.  /data/app 就是用家安裝軟件的放置地,  更新內置軟件也放這裡,  因為 /system/app 是不會被更改的.  Factory Reset 時整個 /data 會被清洗後重新設置.

還有一個重要地方是 /data/dalvik-cache,  往往是整個 /data 中最佔位的 folder,  需要了解.

/cache 是 boot 機時會清洗重置的地方,  是系統暫存區.

再述 /data/dalvik-cache,  是把每個安裝的軟件 (APP) 的 .apk 檔案解壓、優化後建立一個 .dex 檔案放在這裡,  以便執行時用的.  每個在 /system/app 和 /data/app 的 .apk 都會在這裡找到一個 .dex,  如果鏟走了便不能運行.  但在 boot 機時,  會自動檢查如果缺了,  就再建立,  如果有了或多了,  則不會理.  所以可以放心鏟.

內置的軟件如 Market,  Google Maps 時有更新,  會在 /data/app 放置加了 -1  -2  -3 之類 suffix 的 .apk,  並在 /data/dalvik-cache 中建立相應的 .dex,  但舊版的 .dex 不會刪除,  所以在更新後內存少了很多,  很浪費,  這只有 root 了機才有辦法.

明白以上結構後,  有玩電腦經驗的朋友已經可以摺起衫袖開始搞事了.

搞事工具可以用免費軟件 Root Browser Lite.

小弟如何搞?  後文再談.

1 comment:

  1. 好文章!

    我算是個 application programmer

    唔董 結構 你多寫 我多學

    受教 受教

    ReplyDelete