Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Gradle解析

Gradle解析

編輯:關於Android編程

使用android studio有很長一段時間了,記得當初使用android studio的時候,最不適應的部分就是gradle了,現在android開發還是比較火熱,越來越多的人進入這個領域,也發現有很多人對gradle很迷惑,今天就來對gradle進行簡單的解析,希望新來的開發者能盡快的了解gradle,最起碼知道一些概念,無論學什麼東西,知道此東西為什麼會出現?它有什麼用?關於它的一些概念是什麼意思?這是學習東西的一個有效方法,也是作為一個初學者進入更高層次首先要解決的問題。

什麼是Gradle?有什麼用?

專業術語:Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。維基百科

看官:這是什麼啊?什麼構建工具,什麼又是Groovy語言啊?你這明顯是用未知解釋未知?有個毛用啊,都看不懂!
博主:看不懂?我學習的時候也看不懂,好吧,我就以人類的語言加上舉例子這種終極武器來解釋什麼是Gradle.

博主:gradle在哪裡使用?
看官:在開發工具中使用!

博主:那如果我們不同開發工具,而是直接在編輯器中編寫代碼,然後用sdk中提供的編譯打包工具手動的進行編譯和打包,我們還需要使用gradle嗎?
看官:那當然不用使用gradle了,直接手工直接整就行啦,你到底有沒有水平啊,問題問的這麼弱智。。。,唉?不對,等等,我好像知道什麼是構建工具了。

博主:那你說說什麼是構建工具?
構建工具就是一個把我們本來必須要使用手工進行編譯打包的方式來用自動化的方式來完成。

博主:嗯,定義下的不錯,其實說白了,就是在我們編譯打包的時候,我們只需要點擊編譯工具上的一個按鈕,但是這時候是gradle來負責調用sdk中的編譯打包工具的,如aapt.exe等,好像這裡還有點面向對象的味道。

一個android項目中Gradle的種類

如下圖所示(以下圖片均來自網絡):

\

可以看出來一般一個項目中有圖示的幾個gradle文件!

Moudle中的build.gradle

// 聲明是Android程序
apply plugin: 'com.android.application'

android {
    // 編譯SDK的版本
    compileSdkVersion 21
    // build tools的版本
    buildToolsVersion "21.1.1"

    defaultConfig {
        // 應用的包名
        applicationId "me.storm.ninegag"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0.0"
    }

    // java版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        debug {
            // debug模式
        }

        release {
            // 是否進行混淆
            minifyEnabled false
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    // 移除lint檢查的error
    lintOptions {
      abortOnError false
    }
}

dependencies {
    // 編譯libs目錄下的所有jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:21.0.2'
    compile 'com.etsy.android.grid:library:1.0.5'
    compile 'com.alexvasilkov:foldable-layout:1.0.1'
    // 編譯extras目錄下的ShimmerAndroid模塊
    compile project(':extras:ShimmerAndroid')
}

我們來一行一行的進行分析:

apply plugin:如果創建的是一個應用,就以com.android.application作為值,而如果創建的是Library,就以com.android.library作為值。

// 編譯SDK的版本
compileSdkVersion 21
// build tools的版本
buildToolsVersion “21.1.1”
此處應該比較好理解,配置的是編譯版本和構建工具的版本。

release {
minifyEnabled false //false代表不混淆,true代表混淆
// 混淆文件的位置
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’
}

dependencies {
// 編譯libs目錄下的所有jar包
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
compile ‘com.android.support:support-v4:21.0.2’
compile ‘com.etsy.android.grid:library:1.0.5’
compile ‘com.alexvasilkov:foldable-layout:1.0.1’
// 編譯extras目錄下的ShimmerAndroid模塊
compile project(‘:extras:ShimmerAndroid’)
}
這個部分值很重要的,我們會經常使用到。

compile ‘com.android.support:support-v4:21.0.2’
compile ‘com.etsy.android.grid:library:1.0.5’
compile ‘com.alexvasilkov:foldable-layout:1.0.1’
這三個表示的是外部依賴,什麼是外部依賴呢? 就是有一個網站,它專門收集各種軟件庫,當我們想要用哪一個庫的時候,就添加一個compile 依賴,然後ADT工具就會自動的從該網站上把庫下載下來,供我們使用。

整個工程的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
repositories {
jcenter()
}
看到這了嗎?這就是那個存放library的倉庫,除了這個倉庫還有mavenCentral()倉庫。

有的開發者會把這兩個倉庫和github倉庫混淆,其實他們是不一樣的,github關注的是合作開發和代碼分享,而這兩個庫專注的是代碼的收集和存放。

settings.gradle

include ':app', ':extras:ShimmerAndroid'

此配置定義的就是當前項目的子目錄,從圖中可以看出來,此工程中有一個app Modle和一個ShimmerAndroid Moudle.

以上就是在android studio中常用的gradle技能,如有錯誤,敬請指出,不勝感激!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved