非死book推出Android構建工具 - Buck
非死book 推出了一個 Android 構建工具——Buck。該工具能夠將 Android 項目的代碼和資源有機的結合起來, 構建出簡潔的,高可重用性的功能模塊。
Buck 的特色:
Buck 能夠幫助開發人員達成以下目標:
- 加速 Android 構架過程。Buck 能夠充分利用多核 CPU,以并行的方式構建項目工程。另外,Buck 還能自動追蹤項目構建過程,判斷哪些部分在構建時沒有發生改變,從而避免重復構建,進而降低構建所需要的時間。
- 引入了 ad-hoc 構建步驟,這一特性是目前 Android 采用的標準 Ant 腳本構建不支持的。
- 采用了構架規則的思想,通過在構建系統中創建不同的構建規則來進行構建工作,而不是需要一個單獨的系統來產生 build 文件。
- 為單元測試創建“代碼測試覆蓋標尺”。
- 能夠根據構建規則,自動生成 IntelliJ 項目。該特性讓 Buck 不但在自動的持續集成框架中成為理想的構建工具,同時也是 IDE 集成開發環境的最佳構建選擇。
- 能夠維護你的構建依賴項。
- 能夠幫助開發者明了 APK 構建過程中的原理和細節。 </ul>
- 構建規則:構建規則是指從輸入文件產生輸出文件的過程
- 構建目標:構建目標是構建規則的一個字符串形式的標識符。它可以被認為是在使用 Buck 構建的項目中的”URI”.
- 構建文件:構建文件定義了一個或者多個構建規則。在 Make 階段,就相當于是 Makefile, 只不過在 Buck 里,這些文件以 BUCK 命名。一個使用 Buck 進行構建的項目中,應該有很多 BUCK 文件。 </ul>
構建速度的提升無疑是 Buck 最主要的優勢。在 非死book 方面,項目組采用 Buck 進行構建,其速度比采用 Ant 腳本進行構建快兩倍。目前 非死book 仍在努力讓 Buck 的速度進一步提高。
Buck 的工作原理:
在 Buck 中,有三個主要的概念
每個構建規則都能產生 0 到多個與其相關的依賴項(簡稱為 deps). 這些依賴項會形成一張有向圖,Buck 要求該圖沒有環裝結構。
當使用構建規則構建輸出文件時,所有的構建規則所關聯的依賴項會首先被編譯。這也就意味著上面提到的圖結構會“從底向上”進行構建。構建規則只關心某個元素依賴誰,而不關心誰依賴這個元素。這種方式也正是采用有向圖數據結構的原因。該數據結構能夠讓 Buck 有效地辨認出依賴子圖,并采用并行的方式進行構建,同時也能判定出哪些資源需要構建,哪些已經構建過了,不需要再次構建,從而找出最小構建集,提高構建效率。
Buck 對我有用么?
Buck 的設計初衷是為了在單一代碼庫的基礎上提供多點交付功能(而不是多代碼庫多點交付)。根據 非死book 的項目經驗,使用單一代碼庫會讓依賴項的管理容易很多,這樣項目的所有開發者就能保證共享統一而正確的依賴庫,并且原子提交的過程也可以做到簡化。
如果你要構建多個應用程序,抑或你要用多個應用樣例來開發一個應用成品,那么 Buck 就絕對適合你。通過查看 Quick Start,你就能了解 Buck 如何幫助你組織你的 Android 項目,以及如何以更快的速度構建你的 Android 項目!