gradle基礎(chǔ)語(yǔ)法

一、引言

Gradle語(yǔ)法對(duì)于組件化環(huán)境的配置非常重要。首先簡(jiǎn)單介紹下Gradle:

1、Gradle是一種構(gòu)建工具

2、Gradle核心是基于Groovy腳本語(yǔ)言,Groovy腳本基于JAVA且拓展了JAVA,因此Gradle需要依賴JDK和Groovy庫(kù)

3、Gradle是一種弱類型語(yǔ)言,可以類型推倒

二、第一行代碼

打印“hello gradle”,有兩種打印方式:


println ("app-gradle")

println "app-gradle"  //println與字符串之間有空格

打印結(jié)果:(如果沒(méi)看到,點(diǎn)開旁邊的Toggle View就能看到)

測(cè)試結(jié)果

三、深入學(xué)習(xí)

平時(shí)我們新建module時(shí),新建module的build.gradle會(huì)與app的build.gradle中的版本號(hào)以及引入的第三方庫(kù)有很多相同的地方,我們能否建一個(gè)gradle文件對(duì)它們進(jìn)行管理呢,答案是肯定的,接下看看如何做:

準(zhǔn)備工作:

1、在根目錄上新建一個(gè)文件:config.gradle
2、在根目錄的build.gradle中引入config.gradle文件

//將config.gradle引入后,在app與library中才能檢測(cè)到config.gradle中定義的屬性
apply from:"config.gradle"

3、新建一個(gè)library

新建的config文件是空的,這時(shí)我們可以在里面加入ext代碼塊,ext代碼塊可以添加多個(gè)自定義屬性,比如這里我在ext代碼塊中添加一個(gè)username屬性,然后在app與library中輸出username可以這樣寫:

//config.gradle打開是空的,可以通過(guò)ext代碼塊添加多個(gè)自定義屬性
ext{
    username='simon'
}
println("${rootProject.ext.username}") 
println("${username}")   //簡(jiǎn)寫
測(cè)試結(jié)果

前面提到Gradle是弱類型語(yǔ)言,接下來(lái)看看在app中將username賦值為1能否成功:

rootProject.ext.username=1
println("${rootProject.ext.username}")
測(cè)試結(jié)果

可以看到成功將string類型推倒成了int類型

接下來(lái)先對(duì)app與library的版本號(hào)進(jìn)行管理:

在config.gradle中如下寫:

ext{
    username='simon'

    //建立map存儲(chǔ)
    androidid=[
            compileSdkVersion:28,
            buildToolsVersion:"29.0.0",
            minSdkVersion:19,
            targetSdkVersion:28,
            versionCode:1,
            versionName:"1.0",
            testInstrumentationRunner:"android.support.test.runner.AndroidJUnitRunner"
    ]

    //因?yàn)閍pp中applicationId而Library中沒(méi)有,因此將applicationId抽取出來(lái)
    appid=[
            app:"com.example.xiacheng.alearning"
    ]
    
}

在app中如下寫:

//賦值與引用   這里定義的名字不能與下面的androidid、dependencies相同
def androId=rootProject.ext.androidid
def appid=rootProject.ext.appid
android {
    compileSdkVersion androId.compileSdkVersion
    buildToolsVersion androId.buildToolsVersion
    defaultConfig {
        applicationId appid.app
        minSdkVersion androId.minSdkVersion
        targetSdkVersion androId.targetSdkVersion
        versionCode androId.versionCode
        versionName androId.versionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

在library中也一樣

def androId=rootProject.ext.androidid
def appid=rootProject.ext.appid

android {
    compileSdkVersion androId.compileSdkVersion
    buildToolsVersion androId.buildToolsVersion

    defaultConfig {
        minSdkVersion androId.minSdkVersion
        targetSdkVersion androId.targetSdkVersion
        versionCode androId.versionCode
        versionName androId.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

接下來(lái)在對(duì)第三方庫(kù)進(jìn)行統(tǒng)一管理:

//現(xiàn)在我們用的support包都是28.0.0,那么就可以定義一個(gè)supportlibrary
    supportLibrary="28.0.0"
    //第三方庫(kù)
    depencies=[
            "appcompat":"com.android.support:appcompat-v7:${supportLibrary}",
            "recyclerview":"com.android.support:recyclerview-v7:${supportLibrary}",
            "constraint":"com.android.support.constraint:constraint-layout:1.1.3"
    ]

在app中

def support=rootProject.ext.depencies
dependencies {

    implementation fileTree(dir:'libs',include:['*.jar'])

    implementation support.appcompat
    implementation support.recyclerview
    implementation support.constraint

//這里有一個(gè)終極簡(jiǎn)寫  把support進(jìn)行foreach
support.each{k,v->implementation v}

}

library跟app一樣處理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 https://blog.csdn.net/zhaoyanj...
    勤奮的pangdunhu閱讀 2,230評(píng)論 0 1
  • Groovy :是一種動(dòng)態(tài)語(yǔ)言。 1:這種語(yǔ)言比較有特點(diǎn),它和 Java 一樣,也運(yùn)行于 Java 虛擬機(jī)中。簡(jiǎn)單...
    PeytonWu閱讀 1,675評(píng)論 0 1
  • 寄Android開發(fā)Gradle你需要知道的知識(shí) 19snow93[http://www.itdecent.cn...
    素年錦時(shí)_173d閱讀 582評(píng)論 0 1
  • 參考資料:http://gold.xitu.io/post/580c85768ac247005b5472f9htt...
    zhaoyubetter閱讀 11,259評(píng)論 0 6
  • 一、成長(zhǎng)才是根本關(guān)鍵 我選擇的事情,能不能讓我積累更多的能力。 我現(xiàn)在還缺什么能力,接下來(lái)的選擇能不能給我積累已有...
    青椒土豆飯閱讀 157評(píng)論 0 0

友情鏈接更多精彩內(nèi)容