亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Gradle與項目構建

2019-11-09 14:23:01
字體:
來源:轉載
供稿:網友

最近發現有好多朋友問和Gradle相關的東西,于是決定寫一系列博客,簡單備用。

隨著項目的逐步擴大與Android市場上應用需求的多樣化,越來越多的應用需要集成眾多的三方庫與其它依賴,在Google推出的最新idea Android Studio中,引入Gradle用于項目構建工具,那么構建工具有什么優勢呢?

構建工具的主要優勢有以下幾點:

便捷性(Portability)自動化(Automation)可重復性(Repeatability)

那么構建工具有很多(PS:ANT),為什么要選擇Gradle呢?

主要原因還是Google粑粑在Android Studio中選用Gradle作為idea的構建系統,事實上,Android Studio將整個應用的構建過程指派給了Gradle,當點擊”運行”按鈕時,Android studio會在運行過程中設置Gradle并在后臺監控,通過學習Gradle相關知識,我們可以擴展該默認行為以構建能力更強且經過適當測試的Android應用。Gradle使得開發人員只需通過點擊按鈕就可以自動構建和測試應用,針對依賴和變種的管理也更加方便。另外Gradle是一種用于編寫構建腳本的緊湊且強大的構建語言。


說了這么多,怎么安裝Gradle呢?

在Android Studio中,項目構建過程中會執行gradlew腳本,在沒有Gradle的情況下,從網絡端下載。在命令臺上我們可以使用如下方式安裝獨立的Gradle。

最新版的Gradle要求JDK或者JRE版本在1.7以上,所以先運行java -version查看JDK版本,過低先更新,隨后使用包管理工具進行安裝,在類Unix系統上使用SDKMAN,命令是sdk install gradle 3.3,在MAC上使用HomeBrew,命令是brew install gradle,在Windows上使用Chocolatey,命令是choco install gradle。隨后并不需要其他的手動安裝。


Gradle任務簡介

對于Gradle而言,它的一個優勢就是可擴展域模型,這個模型的核心就是任務(PS:task),任務是一種Grale可以推斷出的自約束工作單元,任務的關鍵是任務所進行的操作,比如我們會新建一個任務用于編譯某些java源文件,或者把一個文件從A目錄復制到B目錄又或者只是打印Hello,任務可以單獨執行操作也可以聲明對其他任務的依賴,Gradle會確保所有的這些依賴都在運行并確保它們所有的依賴性等等,任務還可以定義輸入和輸出,它所讀取及所寫入的文件,這使得Gradle能確定任務是否需要執行自己的工作或者所有的內容是否是最新狀態,在這種情況下,它不需要運行。


創建簡單任務

使用gradle -V命令查看Gradle版本,截圖如下:

這里寫圖片描述

隨后我們編寫一個build.gradle文件,內容如下:

task hello { doLast { 在當前目錄執行gradle -q hello,我們可以看到如下運行結果:

這里寫圖片描述

通過上述運行結果我們可以看出,在這里這個腳本只是簡單定義了一個名為hello的task,當執行gradle hello時,Gradle先執行名為hello的task,隨后執行task中的動作,在這個task中所進行的動作就是輸出Hello world!-q的意思是簡潔輸出,不輸出日志,執行gradle hello的運行效果如下圖:

這里寫圖片描述

Gradle需要執行大量工作才能啟動,這主要是因為它需要調起java虛擬機實例,使用Gradle Demon可以縮短這一啟動時間,Gradle Demon是一種掛靠在操作系統后臺的進程,當Gradle使用Gradle Demon時,一個Gradle Demon已經啟動完成并長期運行于后臺,保證JBM實例處于活動狀態,隨后的Gradle都可以使用相同的實例運行,默認情況下,,當在命令行執行Gradle時,Android Studio會使用這種模式,但是必須明確指定啟用這種模式。


Gradle的前世

apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.example.zbtuo.opengltriangles" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.0' testCompile 'junit:junit:4.12'}

上面是一個build.gradle的完整文件,從上述代碼可以看出這是一種類似于分拆式JSON的語法.在最后可以看到一個名為hello的任務,用于輸出”Hello world!”,Gradle文件是按照Gradle提供的特殊用途的構建語言編寫的,它基于一個叫Groovy的通用腳本編制語言,Groovy對一些功能進行了語法改進使我們可以編寫語言比使用java等代碼看起來更自然的構建腳本。其次Groovy與Java完美集成,這是Gradle平臺使用的編寫語言,在使用Gradle時需要了解的主要內容是Android和task等關鍵字所來源于的Gradle構建語言,但是這對了解此構建語言如何以Groovy和Java為基礎很有幫助。整個構建腳本具有所謂的委托對象,它會向構建腳本內的Groovy腳本編制語言公開Gradle構建語言。如果編寫了一個Gradle插件,則可以用任何語言編寫它并使用相同的委托對象。Gradle構建語言也稱為Gradle DSL或域特定語言。域特定語言是針對特定任務精心定制的語言,在這個案例中,我們所談到的域是Android構建,請注意描述構建和提供有關,如何讓構建實現的說明之間存在巨大的差異。Gradle DSL聲明為使你僅負責描述構建而且Gradle本身知道如何使其實現,這意味著你的構建腳本可能會短得多而且容易理解得多,但是在構建腳本內有一個可由你處理的完全成熟且強大的編程語言。我們衷心建議你保持構建腳本的聲明性并且盡量不要用低級邏輯污染它,這正是Gradle插件的用途,你可以采用Groovy,Java或Scala等任何JVM語言來編寫它們。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伦理中文字幕亚洲| 欧美国产日本高清在线| 国产一区二区三区四区福利| 亚洲成人久久网| 日韩在线免费视频观看| 国产精品www网站| 国产精品久久久久久久久久| 狠狠色狠狠色综合日日五| 中文字幕亚洲第一| 91高潮精品免费porn| 久久久99免费视频| 亚洲欧美日本另类| 日韩二区三区在线| 久热精品在线视频| 国产日韩精品一区二区| 欧美日韩国产二区| 亚洲图片欧美日产| 国产亚洲视频在线| 91精品国产精品| 91香蕉嫩草神马影院在线观看| 欧美劲爆第一页| 国产亚洲免费的视频看| 成人网在线观看| 亚洲欧美国产日韩天堂区| 国产精品91在线| 欧美性xxxxx极品娇小| 亚洲第一福利网站| 98精品国产高清在线xxxx天堂| 久久成人在线视频| 亚洲欧美变态国产另类| 欧美一级高清免费| 国产精品免费福利| 国产亚洲视频中文字幕视频| 欧美日韩一区二区在线播放| 欧美性猛xxx| 国产精品美女www爽爽爽视频| 97色在线播放视频| 久久成人亚洲精品| 欧美三级欧美成人高清www| 欧洲亚洲免费视频| 亚洲最大的成人网| 大荫蒂欧美视频另类xxxx| 久久这里有精品| 2021久久精品国产99国产精品| 亚洲精品成人久久| 亚洲国产欧美精品| 精品久久久久久久久久国产| 日韩欧美亚洲一二三区| 国产成人涩涩涩视频在线观看| 亚洲免费视频在线观看| 亚洲国产97在线精品一区| 亚洲小视频在线观看| 欧美成人精品在线观看| 欧美日韩中文在线观看| 久久久中精品2020中文| 欧美成人免费网| 国产精品 欧美在线| 日本sm极度另类视频| 55夜色66夜色国产精品视频| 欧美另类精品xxxx孕妇| 欧美最猛性xxxxx(亚洲精品)| 欧洲永久精品大片ww免费漫画| 国产精品久久久久久中文字| 精品视频在线播放免| 成人www视频在线观看| 国产亚洲美女久久| 人人做人人澡人人爽欧美| 欧美日韩精品中文字幕| 欧美性猛交xxxx偷拍洗澡| 国产精品久久久久久久久免费| 欧美xxxx18国产| 欧美高清视频在线观看| 色噜噜国产精品视频一区二区| 欧美一级大片视频| 亚洲天堂免费视频| 精品亚洲夜色av98在线观看| 2019精品视频| 欧美国产日韩中文字幕在线| 日韩在线激情视频| 亚洲自拍av在线| 欧美精品在线免费观看| 欧美乱妇高清无乱码| 98精品国产高清在线xxxx天堂| 欧美精品久久久久久久| 日韩小视频在线| 日韩欧亚中文在线| 国产精品久久久久久av福利| 日韩网站在线观看| 欧美精品在线免费| 国产精品成人av在线| 亚洲欧美精品中文字幕在线| 国产亚洲欧美视频| 欧美色xxxx| 97在线视频免费看| 久久久之久亚州精品露出| 精品中文字幕在线2019| 日日骚久久av| 色yeye香蕉凹凸一区二区av| 91精品国产自产91精品| 日韩欧美高清在线视频| 亚洲丝袜av一区| 欧美专区在线视频| 91久久久久久久久久| 成人黄色免费片| 国产亚洲视频在线| 国产综合在线观看视频| 亚洲无亚洲人成网站77777| 日韩欧美视频一区二区三区| 精品日本美女福利在线观看| 91av网站在线播放| 欧美视频精品一区| 精品亚洲国产成av人片传媒| 欧美激情一级欧美精品| 亚洲一区二区久久久久久| 久久久精品中文字幕| 欧美电影免费观看大全| 国产盗摄xxxx视频xxx69| 国产91精品视频在线观看| 国产精品三级在线| 欧美成人小视频| 亚洲毛片在线免费观看| 欧美激情a在线| 中文字幕一区电影| 精品成人久久av| 欧美日韩电影在线观看| 精品亚洲aⅴ在线观看| 国产精品久久久久久av福利| 久久精品99久久香蕉国产色戒| 亚洲一区亚洲二区| 欧美天堂在线观看| 国产成人高清激情视频在线观看| 国产噜噜噜噜噜久久久久久久久| 欧美成人亚洲成人| 欧美日韩国产限制| 亚洲欧美制服丝袜| 久久亚洲国产精品| 国产精品爱啪在线线免费观看| 免费91在线视频| 国产成人精品电影久久久| 国产日韩欧美日韩大片| 久久99热这里只有精品国产| 色偷偷888欧美精品久久久| 欧美日韩一二三四五区| 国产一区二区三区中文| 日韩在线视频播放| 精品久久久91| 91国产精品视频在线| 正在播放国产一区| 日韩精品在线播放| 97成人精品视频在线观看| 国产一区二区香蕉| 亚洲美女性生活视频| 欧美老少做受xxxx高潮| 国产精品免费一区二区三区都可以| 久久成人综合视频| 精品毛片三在线观看| 成人疯狂猛交xxx| 成人性教育视频在线观看| 九九九久久国产免费| 久久久久久久久久久网站| 国产精品久久久久久亚洲调教| 欧美日韩中文字幕在线视频| 亚洲国产精品一区二区久| 欧美日韩在线观看视频|