用 Eclipse 開發過 Android 的人一定都有相同經驗,隨著 Project 越來越大,當修改某個 Resource 後 Eclipse 一定會卡住一陣子,這時右下角出現 building workspace、百分比開始跑,整個 Coding 被迫中斷,思緒也跟著打斷,直到 build 結束才能繼續。
會這樣是因為 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 就建好了。
步驟二:下載 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 拉到開始功能選單中的啟動內,讓電腦開機後自動連結
這時放心的砍掉 Project 內的 bin 資料夾,讓下次重開機後 junction.exe 可以順利建立連結,砍了嗎?砍了就快點重開機享受快速又安靜的 rebuild 吧。
後記
這樣的方式應該也適用於其他的 IDE 工具、適用於開發非 Android 的 Project,只要把握住原則,用 RAMDisk 來加快 Project 內最常存取的資料夾,應該都可以達到同樣的目的。
沒有留言:
張貼留言