精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

給Android開發者的Gradle入門指南

移動開發 Android
本文的目的是為您提供關于 Gradle 的高級概述,以及在開發 Android 應用程序時如何適應整個構建系統。 我將通過 Gradle 和 Gradle 的 Android 插件的基礎知識,以及新的 Android 項目附帶的默認 build.gradle 腳本來進行講述。

本文的目的是為您提供關于 Gradle 的高級概述,以及在開發 Android 應用程序時如何適應整個構建系統。 我將通過 Gradle 和 Gradle 的 Android 插件的基礎知識,以及新的 Android 項目附帶的默認 build.gradle 腳本來進行講述。

本文不會教你如何編寫定制的 Gradle 腳本或任何類型的東西。正如標題所說,這是給真正意義上的初學者的文章。

背景故事

我先坦白一下:我主要是一名 iOS 開發人員。在整個職業生涯中,只有四分之一的時間用于開發 Android 應用程序。正因為如此,我從來沒有真正理解 Gradle 是什么。當我點擊 Android Studio 中的綠色播放按鈕時,我知道這是“工作”,但我不知道它實際上做了什么。

當我看到“ Gradle Build Running ”這個詞超過 10 秒時,這讓缺少相關知識的我非常不耐煩。 “有什么需要這么久?”我會問 Android Studio ,希望有某種跡象表明它不僅僅是卡住了。在工作中,每當我看到一個 Android 開發者茫然地盯著屏幕,我經常開玩笑地問他們:“你是在等 Gradle 構建嗎?

最終我感到沮喪,并決定找出要如何減少構建時間。我看了一個名為“ 加快 Android 的 Gradle 構建 ”的 Google I/O ’17 的演講,相信會解開所有我想要的提升 Gradle 速度的關鍵。

[[211322]]

 

40分鐘之后,我意識到我對 Gradle 一無所知,所以我根本沒有機會做得更好。 我停下腳步,決定現在是去理解 Gradle 的時候了。

基礎知識

為了解決這個問題,讓我們先弄清楚一些事情:

  1. Android Studio 不知道如何將 Java&Kotlin 代碼編譯成 APK 文件。
  2. Gradle 不知道如何將 Java&Kotlin 代碼編譯成 APK 文件。

是的,你沒看錯。

Gradle 本身并不知道如何編譯 APK 文件,因為 Gradle 實際上是一個 通用的構建工具 。它不限于構建 Android 應用程序。在 Gradle 的 GitHub 倉庫 中,它被描述為:

...構建工具,著重于構建自動化和支持多語言開發。如果您在任何平臺上構建、測試、發布和部署軟件,Gradle 提供了一個靈活的模型,可以支持從編譯和打包代碼到發布的整個開發生命周期。 Gradle 本身實際上并不能做太多。所有有用的功能都來自豐富的插件生態系統。把你添加到 Android 應用程序中的所有第三方庫視為插件。您可以使用這些插件來擴展應用程序的功能,就像 Gradle 使用插件來擴展自己的功能一樣。

有很多與 Gradle 捆綁 在一起的插件,以及更多 可以下載的插件 。但是,如果你閱讀 Gradle 附帶的插件列表,則會發現在該頁面上找不到“Android”。

Android Plugin for Gradle

Android Plugin for Gradle 是一個使 Gradle 能夠將您的代碼編譯成用你的密鑰簽名 APK 文件的插件,甚至將 APK 安裝到你的模擬器或測試設備上。這個插件驅動你的整個構建系統。

沒有它,Gradle 就無法知道如何對代碼做任何事情。這也就是我前面說的 Android Studio 和 Gradle 不知道如何構建你的 Android 項目:這個插件是 Android Studio 和 Gradle 之間的魔法鏈。

深入腳本

現在我們已經掌握了一些基礎知識,接下來看看如何轉化為日常實現。當你在 Android Studio 中啟動一個全新的項目時,會獲得以下文件:

給 Android 開發者的 Gradle 入門指南

這些文件是什么?

所有帶有“ gradle ”文字的文件都用于為我們的 Android 項目配置 Gradle 。里面存在多個文件,因為它們都有不同的用途。

Gradle Wrapper

gradle-wrapper.properties 文件有一個簡單的目的:決定在構建項目時使用哪個 Gradle 版本。它將隨后會自動為你下載并保存該版本的 Gradle 。如果你在 Mac 上使用,運行下面命令 ls ~/.gradle/wrapper/dists/ 你就可以看到 Gradle Wrapper 曾為你下載過的所有 Gradle 版本。

 

給 Android 開發者的 Gradle 入門指南

(gradle-wrapper.properties)

注意你的 Gradle 版本是獨立于你的 Android 插件版本的。在本文撰稿時,目前 最新的 Gradle 版本是 v4.3 。Android Studio 依然默認使用 v4.1 ,所以如果你愿意,你可以很安全的將版本升級到 v4.3 。

settings.gradle

settings.gradle 文件是保存在你通知 Gradle 的地方,即你的工程所有的子工程 /module 目錄下。這是通過 include 命令完成的。如果你將另一個模塊添加到你的工程中,Android Studio 將會自動將其添加到這個文件中。

build.gradle

從 Gradle 的角度來看,我們的工程被認為是一個 多工程構建, 其中你擁有一個根項目以及一個到多個子工程。從 Android 開發者的角度來看,這些子工程被稱為 module (模塊)。

這就是為什么你會看到兩個 build.gradle 文件的原因。一個是給根項目的,另一個是給伴隨著你的項目的 app 模塊的。讓我們先看看你的根項目的格式吧。

 

給 Android 開發者的 Gradle 入門指南

(根項目的 build.gradle )

  1. 這個完整的 buildscript {} 塊用于告知 Gradle 腳本本身,關于編譯本項目需要的那些。
  2. 我們在這個 buildscript 中聲明了 Android Gradle 插件的依賴性。“3.0.0” 表示要使用的插件版本。
  3. 我們告知 Gradle 我們需要到 google() Maven 代碼庫和 jcenter() 代碼庫中檢索一些事項。
  4. 在Gradle 項目中添加 額外的屬性 ,以支持它可以在整個 Gradle 項目中是可訪問的。換言之,這是 Gradle 風格的全局變量。我們可以通過使用決定所導入的 kotlin-gradle-plugin 的版本的方式來查看該變量的值。
  5. 正如名字所暗示的, allprojects{} 塊被用于通知 Gradle 關于所有需要編譯的子項目,并使用這個代碼庫集合來解決所有需要的依賴項。

 

給 Android 開發者的 Gradle 入門指南

(app 模塊的 build.gradle)

  1. 首先,我們應用真實的 Android 插件,然后我們使用 其擴展插件 來應用 Kotlin Android 插件。
  2. 此完整的 android{} 塊工作的唯一原因是因為我們要求 Gradle 使用之前提到的 Android 插件。我深信你對修改該模塊內部的值非常熟悉,但你是否對所有可能放入該塊的值有過好奇呢?好事情是它 在此都被文檔化了!
  3. 這里就是你添加 Gradle 所依賴的第三方庫的位置。注意在你的 app 的 build.gradle 中并沒有 repositories{} 塊。既然我們已經在根項目的 allprojects{} 塊中聲明了,這里就沒有必要了。
  4. 還記得我們在根構建文件中的全局變量嗎?是的,這里就是起作用的地方。最好采用類似 管理你所支持庫的版本 一樣的策略可能是個不錯的主義,這可以保證他們都是用同一個版本。

Gradle 任務

現在我們透過腳本,還有一件你必須知道的關于 Gradle 的事:任務。

任務是基本的東西,Gradle 可以每當被觸發時生成,記得早前(上文)我說 Android Studio 其實不知道如何編譯你的代碼?因為在 Android Studio 點擊大綠色的 play 按鈕會觸發一個具體的任務在 Gradle 執行。

給 Android 開發者的 Gradle 入門指南

在右下角,點擊 “Gradle Console” 按鈕去打開 Gradle Console ,然后點擊 play 按鈕運行 app ,一大堆命令會出現,但我們只關心頂部的:

  1. Executing tasks: [:app:assembleDebug] 

我們只討論 Gradle 執行的 assembleDebug 任務,我們可以通過命令行來做相同的事,點擊左邊的 Terminal 按鈕并運行本段代碼:./gradlew assembleDebug --console plain

給 Android 開發者的 Gradle 入門指南

瞧!你只是讓 Gradle 運行與播放按鈕完全相同的命令。有幾件事要注意:

  1. ./gradlew 意味著使用 Gradle Wrapper 來代替 “vanilla” Gradle 。強烈建議您始終使用 Wrapper 版本。
  2. assembleDebug 是你剛剛要求它運行的任務的名稱。
  3. --console plain 告訴 Gradle 打印生成日志,就像你在 Android Studio 中看到的一樣。完全是可選的。

讓我們運行最后一個命令:./gradlew tasks

這個命令將列出 Gradle 目前在這個項目中所知道的所有任務,并提供每個任務的簡短描述。很酷吧?

現在,點擊 Android Studio 右上角的 Gradle 標簽。

給 Android 開發者的 Gradle 入門指南

哈哈!這是一樣的東西。這一部分只是列出了 Gradle 可以為這個項目運行的所有可能的任務。在這里雙擊 assembleDebug ,就可以做到與剛剛在命令行上做的一樣的事情,并且和播放按鈕做同樣的事情。

如果您在 Android Studio 中運行“重建項目”命令,同時保持 Gradle 終端處于打開狀態,你將會意識到它所做的只是運行 clean 任務,然后運行 assembleDebug 命令。這就是我發現在重建項目之前運行清理項目是完全不必要的,因為重建項目無論如何都會運行相同的 clean 任務。

結束時的思考

我希望這篇文章能夠讓你更好地了解 Gradle 如何適應你的開發流程。為按照你們常規的思考方式來寫,這花費了我更長的時間,但是這對我來說是非常值得的。我已經重新看了“ 加速 Android Gradle 構建 ”的視頻,我很自豪地說,在看完后我不會再完全迷失了。

責任編輯:未麗燕 來源: 開源中國翻譯文章
相關推薦

2024-05-07 08:45:16

OpenAILlamaIndex大語言模型

2013-08-30 09:41:46

JavaApache CameApache

2011-07-19 09:51:32

性能優化Designing FAndroid

2024-02-01 09:37:42

Kubernetes服務網格? 命令

2025-03-17 08:00:00

2018-06-03 08:00:24

AI開發深度學習語言

2018-03-27 23:25:40

Paddle

2012-04-02 22:49:58

Android

2011-12-05 22:44:53

Android

2014-05-08 13:36:07

Android Wea開發者預覽版

2024-03-21 08:18:00

Chrome前端瀏覽器

2023-05-19 10:04:18

Vue開發者代碼

2019-08-16 10:55:37

開發者技能AI

2014-07-01 11:31:35

NDKSO庫JNI調用

2015-05-12 14:05:49

谷歌開發者

2013-05-15 10:02:08

軟件開發開發者

2019-02-21 13:40:35

Javascript面試前端

2022-01-02 23:26:08

開發SDK Sentry

2012-04-01 15:03:39

大型項目開發者

2022-01-15 23:33:47

SentryPyCharm配置
點贊
收藏

51CTO技術棧公眾號

精品久久久久久久久久久国产字幕| 亚洲av毛片在线观看| 国产高清视频在线| 精品在线播放免费| 97视频在线免费观看| 一区二区伦理片| 欧美日韩黄网站| 欧美性猛交xxxx乱大交蜜桃| 成年人黄色在线观看| 污视频网站免费观看| 精品一区二区在线观看| 亚州欧美日韩中文视频| 欧美成人久久久免费播放| 99国产精品免费网站| 欧美性xxxxxxxx| 久操网在线观看| 1769在线观看| 91香蕉视频mp4| 亚洲精品日韩av| 亚洲永久精品一区| 国产一区亚洲| 日韩视频精品在线| 亚洲精品午夜视频| 老司机精品视频在线播放| 欧美疯狂做受xxxx富婆| 超碰影院在线观看| 182在线视频观看| 一区二区中文视频| 欧美一区免费视频| 色婷婷av一区二区三| 国产精品系列在线播放| 国产乱肥老妇国产一区二| 天天操夜夜操视频| 在线观看日韩av电影| 欧美精品做受xxx性少妇| 亚洲色图欧美色| 久久99国内| 日韩av一卡二卡| 欧美极品jizzhd欧美仙踪林| gogo大尺度成人免费视频| 欧美性生活影院| 毛葺葺老太做受视频| 蜜桃麻豆av在线| 婷婷久久综合九色国产成人| 精品人妻人人做人人爽| 91蜜桃在线视频| 亚洲精品免费播放| 久久久久亚洲av无码专区喷水| 性开放的欧美大片| 中文子幕无线码一区tr| 色99中文字幕| 1区2区3区在线观看| 中文字幕不卡的av| 亚洲国产精品一区在线观看不卡| 国产无套粉嫩白浆在线2022年 | 日本久久91av| 天天操天天操天天操天天| 亚洲精品婷婷| 88xx成人精品| 一级片免费在线播放| 日韩av一区二区在线影视| 国产精品久久久久久久电影| 亚洲精品无码久久久久| 免费成人在线视频观看| 91久久久久久久久| www久久久com| 99久久99久久综合| 久久精品一二三区| 国产福利在线| 亚洲视频一区在线观看| 人妻av无码专区| 999av小视频在线| 日韩欧美在线视频免费观看| 成人中文字幕av| 色综合久久久| 欧美v日韩v国产v| 国产白嫩美女无套久久| 精品美女视频| 久久伊人精品一区二区三区| 国产在线观看成人| 久久久久91| 91美女片黄在线观| 免费观看的毛片| 国产拍欧美日韩视频二区| 国产成人三级视频| 大胆人体一区二区| 欧美精品777| 国产精品一区二区无码对白| 国产欧美日韩在线一区二区| 久久久国产在线视频| 五月婷婷亚洲综合| 久久国产婷婷国产香蕉| 国产亚洲一区二区三区在线播放 | 日韩一二三区| 亚洲性线免费观看视频成熟| 欧美又粗又大又长| 久久大逼视频| 国产传媒一区| 日本美女在线中文版| 午夜精品一区在线观看| 亚洲色图 在线视频| 国产丝袜一区| 久久精品夜夜夜夜夜久久| 亚洲国产成人精品激情在线| 久久成人精品无人区| 国产在线观看一区| 久久精品视频观看| 色综合久久综合网欧美综合网| 免费黄频在线观看| 国产精品亚洲二区| 欧美精品成人在线| 91尤物国产福利在线观看| 97se亚洲国产综合自在线| 日本福利视频导航| av一区在线| 日韩精品日韩在线观看| 超碰在线国产97| 蜜桃一区二区三区在线| 欧美日韩亚洲一区二区三区在线观看 | 国产一区二区三区影视| 亚洲国产日韩欧美综合久久| 欧美大片xxxx| 久久aⅴ国产欧美74aaa| 欧美日韩国产免费一区二区三区| 丰满诱人av在线播放| 91精品婷婷国产综合久久| 欧美人妻一区二区三区| 在线亚洲精品| 精品毛片久久久久久| 欧美hdxxx| 欧美成人aa大片| 人妻少妇精品一区二区三区| 久久国产精品免费| 午夜精品短视频| 婷婷午夜社区一区| 亚洲精品自拍偷拍| 日韩特级黄色片| gogogo免费视频观看亚洲一| 福利视频免费在线观看| 视频一区视频二区欧美| 欧美精品日韩三级| www.欧美国产| 亚洲综合色自拍一区| 精品国产午夜福利在线观看| 亚洲九九视频| 5g国产欧美日韩视频| a级网站在线播放| 欧美一区二区三区影视| www欧美com| 国产成人免费在线观看| 日韩亚洲欧美视频| 国语一区二区三区| 91wwwcom在线观看| 欧美xxx.com| 日本大香伊一区二区三区| 久久精品国产亚洲av久| 日韩国产精品久久| 亚洲一区三区| 久久亚洲精精品中文字幕| 欧美成人合集magnet| 国产wwwwwww| 亚洲一区在线视频观看| 国产精品久久AV无码| 国产精品美女久久久| 日韩欧美第二区在线观看| 国产欧美自拍| 欧美日本国产在线| 天天干,天天操,天天射| 91精品福利视频| 99鲁鲁精品一区二区三区| 国产91露脸合集magnet| 精品久久一二三| 波多野结衣在线播放一区| 91网在线免费观看| 国产福利电影在线播放| 亚洲欧美日韩精品久久亚洲区| 亚洲系列在线观看| 夜夜夜精品看看| 一区二区不卡免费视频| 美女视频黄a大片欧美| 亚洲天堂第一区| 欧美天堂影院| 成人黄色av网站| av日韩国产| 国产亚洲综合久久| 亚洲AV无码国产精品午夜字幕| 激情亚洲一区二区三区四区| 国产白丝一区二区三区| 成人综合婷婷国产精品久久免费| 国产精品免费观看久久| 久久一级电影| 精品国产日本| 中文成人激情娱乐网| 91超碰中文字幕久久精品| √新版天堂资源在线资源| 日韩欧美国产一二三区| 无码人妻丰满熟妇区五十路| 亚洲美女视频在线| 国产毛片久久久久久久| 国产成人精品在线看| 一路向西2在线观看| 亚洲毛片播放| 一级特黄妇女高潮| 欧美老女人另类| 国产午夜精品一区| 久久亚洲精精品中文字幕| 国产精品999| 日本在线播放一二三区| 欧美高跟鞋交xxxxhd| 在线观看完整版免费| 日韩久久精品电影| 粉嫩av一区二区夜夜嗨| 欧美老年两性高潮| 超碰在线97观看| 午夜久久久久久电影| 久久久久久视频| 日本一区二区视频在线观看| 久久无码人妻精品一区二区三区 | 爆操欧美美女| 国产亚洲一级高清| 日本一区二区三区在线观看视频| 欧美α欧美αv大片| 国产女18毛片多18精品| 欧美日韩精品欧美日韩精品一| 日韩久久中文字幕| 精品久久久久人成| 国产一级一片免费播放放a| 亚洲免费色视频| 国产精品精品软件男同| 中文字幕av不卡| 正在播放国产对白害羞| 久久久蜜桃精品| 双性尿奴穿贞c带憋尿| 91香蕉视频污在线| 无遮挡aaaaa大片免费看| 94色蜜桃网一区二区三区| 久久免费精品国产| www.亚洲色图.com| 亚洲欧美日韩偷拍| av成人免费在线观看| 性色av蜜臀av浪潮av老女人| hitomi一区二区三区精品| 免费黄色三级网站| 99re在线视频这里只有精品| www.17c.com喷水少妇| 波多野结衣一区二区三区| 日本在线不卡一区二区| 成人免费高清在线| 女同性恋一区二区三区| 99久久久精品免费观看国产蜜| 亚洲视频在线播放免费| 久久综合色之久久综合| 成人精品999| 国产精品二三区| 极品久久久久久| 午夜影院久久久| 九九精品免费视频| 欧美中文字幕亚洲一区二区va在线 | 另类图片国产| 中文字幕 91| 国产在线精品一区在线观看麻豆| 男插女视频网站| 99久久国产免费看| 国产又大又粗又爽的毛片| 国产精品网曝门| 九九在线观看视频| 五月开心婷婷久久| 欧美在线视频精品| 日韩一区二区三区四区五区六区| 午夜美女福利视频| 日韩大片在线观看视频| av在线中文| 欧美日韩成人在线观看| 亚洲国产福利| 成人免费淫片aa视频免费| 一区二区三区视频免费视频观看网站| 国产精品美女久久久久av福利| 天天做夜夜做人人爱精品| 婷婷四房综合激情五月| 欧美fxxxxxx另类| 成人黄色av片| 美国av一区二区| 日本性生活一级片| 中文字幕精品三区| 免费在线看黄网址| 色综合色狠狠天天综合色| 国产口爆吞精一区二区| 亚洲精品乱码久久久久久金桔影视 | 性中国古装videossex| 日韩精品极品毛片系列视频| 天堂аⅴ在线地址8| 97在线视频观看| 日本成人在线网站| 久久久免费看| 欧美一区二区三区另类| 久久国产乱子伦免费精品| 国产精品一区二区三区99| 一区二区三区久久久久| 一区二区三区加勒比av| 中文字幕有码无码人妻av蜜桃| 精品久久久久久久久久久久久久久 | 亚洲电影影音先锋| 亚洲熟妇av一区二区三区| 国产精品99久| 日韩精品电影一区二区三区| 亚洲第一成人在线| 国产精品无码免费播放| 国产一区二区欧美日韩| 成人性生交大片免费看网站| 国产日韩中文在线| 国产亚洲电影| 国产最新免费视频| 成人午夜电影久久影院| 永久免费看片直接| 欧美日韩日日骚| 九色在线播放| 88xx成人精品| 国产图片一区| 免费网站永久免费观看| 极品美女销魂一区二区三区 | 欧美影院三区| 日本三级免费观看| 99久久综合狠狠综合久久| 久草网站在线观看| 欧美一区永久视频免费观看| 午夜免费福利在线观看| 国产成人精品综合| 最近国产精品视频| 成人小视频在线看| 99re66热这里只有精品3直播 | 欧美日本一道本| 337p日本欧洲亚洲大胆鲁鲁| 国产精品99一区| 成人在线免费观看视频| 天堂在线资源视频| 久久精品一级爱片| 免费看污视频的网站| 亚洲乱码av中文一区二区| 中文字幕在线官网| 久久综合一区| 久久天天综合| 老头老太做爰xxx视频| 欧美性大战久久久久久久蜜臀| 国产永久av在线| 国产精品99免视看9| 精品日韩毛片| 激情文学亚洲色图| 亚洲人被黑人高潮完整版| 99热这里是精品| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品一区二区三区www| 成人短视频在线看| 国产不卡免费视频| 日韩少妇高潮抽搐| 亚洲欧美日韩在线高清直播| 高清电影一区| 一区二区三区在线视频111 | 久久久久国产精品区片区无码| 午夜电影一区二区三区| 四虎影视2018在线播放alocalhost| 日本久久久久久久久| 久久精品不卡| 国产免费无码一区二区| 欧美日韩一区免费| 成年网站在线| 99国产在线视频| 中文精品视频| 先锋影音av在线| 欧美一卡2卡3卡4卡| 欧美私密网站| 色噜噜色狠狠狠狠狠综合色一| 久久97超碰国产精品超碰| 久久精品免费av| 亚洲午夜av久久乱码| 国产日本亚洲| 一女被多男玩喷潮视频| 国产精品久99| 黄频网站在线观看| 日韩免费在线视频| 欧美激情aⅴ一区二区三区| 国产熟女高潮一区二区三区| 欧美性生交片4| 波多野结衣中文字幕久久| 日本不卡久久| 国产91在线|亚洲| 波多野结衣视频在线观看| 欧美精品在线极品| 精品国产一区二区三区久久久樱花 | 中文字幕乱码久久午夜不卡| 成 人 黄 色 片 在线播放| 日本高清视频一区| 欧美在线1区| 亚洲一级中文字幕| 日韩三级中文字幕| 精品123区| www.av中文字幕| 亚洲女与黑人做爰| 九色在线观看视频| 国产综合18久久久久久| 精品一区二区免费|