原文鏈接:http://www.woaitqs.cc/gradle/2016/12/20/android-gradle-1.html
開發(fā) Android 的同時,也應(yīng)該了解其構(gòu)建構(gòu)建工具击吱。特別是在實際的生產(chǎn)開發(fā)項目中虑椎,對于需要分發(fā)的包有各式各樣的需求,靈活應(yīng)用構(gòu)建工具將會極大地提升生產(chǎn)效率纲爸,另一方面亥鸠,在日常開發(fā)中,對構(gòu)建工具的了解识啦,也能幫你省去不少額外工作读虏。Gradle 他是你最親密的戰(zhàn)友之一,好好珍惜他袁滥。
Android 構(gòu)建過程
Android 系統(tǒng)在構(gòu)建的時候盖桥,需要將源碼和資源文件打包進入APK中,然后進行簽名题翻,部署和分發(fā)揩徊。下圖是對這個過程的簡要說明,接下來具體說下執(zhí)行的步驟嵌赠。
- 編譯器將源代碼編譯成 Dex 文件(Android 平臺特定的格式)塑荒。
- 打包器將上一步編譯好的 Dex 文件和對應(yīng)的資源文件打包到同一 APK 文件中。
- 在這個 APK 部署到目標設(shè)備之前姜挺,必須要進行簽名齿税。如果是 Debug 版本,那么就會對應(yīng)著有 Debug 版本的簽名炊豪,通常情況下凌箕,這部分簽名可以由 Android Studio 來提供。如果是 Release 版本的話词渤,就需要提供對應(yīng)的 Release 版本的 Keystore牵舱。
- 在最后生成 APK 之前,Zipalign 會優(yōu)化下 APK 的包結(jié)構(gòu)缺虐,節(jié)省一點的空間芜壁。
為什么要用 Gradle
在前面的步驟里面可以看到,Android APK 打包的過程比較復(fù)雜,牽涉到的環(huán)節(jié)也非常地多慧妄。我們可以想象在打包過程中有哪些可以進行自定義的部分顷牌。例如多渠道、簽名塞淹、打包類型等等太多了韧掩,當這些變量分子太多時,就需要一個足夠強大的打包工具了窖铡。Gradle 就是其中的佼佼者疗锐。
Gradle 擁有如下的優(yōu)點:
- 腳本語言,非常靈活费彼,沒有之一滑臊。
- 支持多 Project、多 Model 的配置箍铲,能夠讓層次更加鮮明雇卷。
- 非常強大的DSL (Domain Specific Language) ,領(lǐng)域相關(guān)語言颠猴,在 DSL 幫助下能幫我們省去很多額外工作关划。(例如 Android、Java 這些都是領(lǐng)域翘瓮,DSL 在針對這些領(lǐng)域做的工作)贮折。
- 采用了 Groovy 這個動態(tài)語言,相對 Ant资盅、Maven 支持更多高階屬性调榄。
當然 Android 采用 Gradle 的最主要原因是 Google 喜歡,233333.
關(guān)于 Gradle 所采用的語言 Groovy呵扛,將在下一篇文章中做講解每庆,有興趣的同學可以看看這篇文章。 Learn Groovy in Y Minutes
可能有同學問為什么不直接講 Gradle 的命令就好了今穿?我的理由是缤灵,不會 Groovy,你無法深入了解 Gradle蓝晒,對這個強大的構(gòu)建工具將會始終流于表面腮出。同樣,Groovy 這種動態(tài)語言的編程范式拔创,也會幫助大家開另一扇窗利诺,看看外面更大更遼闊的世界。
文檔信息
- 版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證)
- 發(fā)表日期:2016年12月20日
- 社交媒體:weibo.com/woaitqs
- Feed訂閱:www.woaitqs.cc/feed.xml