Google早從2013年就開始使用Gradle來作為Android SDK的建置工具(Build)。臺灣使用安卓系統的手機廠商HTC也因此跟著在App開發流程中導入Gradle,HTC技術副理邱炫儒在DevOps2015研討會指出,正是Gradle才讓HTC得以實踐DevOps。

他說,DevOps是文化,同時也是一個幫助我們專案快速產出高品質結果的實作方式。而DevOps工具則要能夠將IT自動化,讓產品流水線(Pipeline)在頻繁嵌入程式碼的執行建置時,還能追蹤每次變動順利執行。

以前Java開發者常用兩種開發自動化工具Ant與Maven來管理App開發流程,不過這兩種工具的特性截然不同,Ant擁有高度彈性,可按照開發者的想法設計;而Maven則是提供了一套嚴格標準化的規範來律定開發流程。現在,Java開發者可以有另一個選擇,採用兼顧Ant和Maven特性的折衷方案Gradle,邱炫儒解釋,Gradle提供了一個自動化開發建置的範本,就像風水學可供居家布置的參考,但也不一定要照單全收,開發者可依Gradle提供的參考範本來執行,但有可依據開發者的需求來彈性調整。

Java開發者使用的開發工具Ant非常彈性,可按照開發者的想法設計;而Maven對專案有極標準化的規範。而工具Gradle則是Ant和Maven的折衷,有標準能參考依循同時也能彈性客製化。

邱炫儒進一步說明,Android App開發上的問題及對應的處理方式,如產品流水線上的溝通嫌隙,他利用Gradle建立Build配置檔案後,就可以可以讓命令行環境(Command line)與IDE套用同樣的設定組態,如此一來持續整合伺服器與開發端就可以沒有代溝的連結起來。

另外,軟體商品可能因為不同的客戶如裝置類型,而要分為好幾個商業化客製版本,邱炫儒表示,透過Gradle內的Product Flavor製作不同的Android安裝包(APK)分在不同的目錄,APK就是不同的軟體版本。透過Gradle腳本語言將他們自動化,同時管理多個APK。他認為,盡量將商業版本的客製提前到開發階段比較妥當。

而新專案最麻煩的地方在於整理程式碼及如何建置測試專案,邱炫儒指出解決方法在於建立可重複的流程。HTC利用Gradle搭配Git來管理配置檔資料夾及腳本語言,還能支援多專案架構,每個專案都可有自己的專屬目錄。

最有幫助的功能,邱炫儒認為是Gradle的相依性管理(Dependency Management),不只可以自動向遠端伺服器取得相關的函式庫,甚至還能提供了可遞移性相依(Transitive Dependencies)功能,他解釋,若相依的程式碼背後還有相依的函式庫,Gradle能一次幫開發者抓下來。

邱炫儒認為,好用的DevOps工具不能只是協助開發流程順暢執行,還要讓開發流程順利和產品維運端的流程銜接,才能真正實踐DevOps。


Advertisement

更多 iThome相關內容