2010年3月19日

加快 Android rebuild 速度 讓你硬碟不再哀號

2010-03-19_222841.pngEclipse 開發過 Android 的人一定都有相同經驗,隨著 Project 越來越大,當修改某個 Resource 後 Eclipse 一定會卡住一陣子,這時右下角出現 building workspace、百分比開始跑,整個 Coding 被迫中斷,思緒也跟著打斷,直到 build 結束才能繼續。

2010-03-20_000700.png

會這樣是因為 ADT Plugin for Android 的關係,當 res 目錄下的檔案有異動時,ADT 會 rescan 所有的 resource,rebuild 成對應的 class 檔(例如 R.class),以便讓異動後的內容可以在 Coding 時引用。隨著 resource 越來越多,rebuild 的時間也會越來越長,rebuild 有多久,硬碟哀號的時間就有多久。

要避免硬碟哀號,只要讓 ADT rebuild 時不要寫入到硬碟就好,這時可以透過 RAMDisk 來解決,讓 rebuild 後的 class 寫入記憶體中,不會碰到硬碟,硬碟就不會鬼叫。

我們可以簡單的利用兩個工具 + 三個步驟來搞定他。

步驟一:建立 RAMDisk

下載位置:Dataram RAMDisk 3.5.130RC10

這裡推薦一套 RAMDisk 工具 ─ Dataram RAMDisk,建出來的 RamDisk 速度比其他工具建出來的 RAMDisk 快、相容 Windows 7、使用又方便。

下載安裝後,執行 RAMDisk Configuration Utility,設定想要的 Disk Size(如果只要放 class 不用設定太大,100 MB 就非常夠了),其他都不用動,按下 Start RAMDisk,不一會兒 RAMDisk 就建好了。
2010-03-19_230839.png

瞧瞧檔案總管中,是不是多了一個 RAMDisk 的槽2010-03-19_231628.png

步驟二:下載 Junction

下載位置:Junction v1.05

Junction 是一隻 Microsoft 出的小程式,用來建立兩個資料夾的連結,功能如同 Linux 下的 ln 一樣,建立 hard link。

例如 C:\link\ 已經利用 Junction 連結到 D:\linked\,手動在 C:\link\ 建立一個 test.txt,這時 D:\linked\ 也可以看到 test.txt,打開 D:\linked\test.txt 隨便修改存檔,C:\link\test.txt 也會跟著改變,這就是連結的效果。實際上檔案是建立在 D:\linked\,只是 C:\link\ 也可以看到相同的內容。(好饒舌~~~)

下載後先解開隨便放在一個資料夾,假設是 C:\Junction\

步驟三:自動建立連結

ADT rebuild 後的 class 都放在 Android Project 根目錄下的 bin 資料夾,我們只要把 bin 資料夾建立連結到 RAMDisk 上,自然就可以避免寫入檔案時硬碟狂叫,還可以加快寫入速度,真是好處多多。

怎麼做?先複製下列內容存成 link.bat,放在跟 junction.exe 同一目錄下。

mkdir F:\NewsBot
junction "E:\workspace\NewsBot\bin" "F:\NewsBot"

再修改上述內容符合自己的開發環境
F:\NewsBot 是RAMDisk 上要被 bin 資料夾連結的位置
E:\workspace\NewsBot\bin 是 Project 的 bin 資料夾位置

修改後把 link.bat 拉到開始功能選單中的啟動內,讓電腦開機後自動連結
2010-03-19_235225.png

這時放心的砍掉 Project 內的 bin 資料夾,讓下次重開機後 junction.exe 可以順利建立連結,砍了嗎?砍了就快點重開機享受快速又安靜的 rebuild 吧。

後記

這樣的方式應該也適用於其他的 IDE 工具、適用於開發非 Android 的 Project,只要把握住原則,用 RAMDisk 來加快 Project 內最常存取的資料夾,應該都可以達到同樣的目的。

Related Posts Plugin for WordPress, Blogger...