1. 程式人生 > >Android build.gradle檔案詳解

Android build.gradle檔案詳解

Android build.gradle詳解


什麼是gradle?
gradle是一個專案構建工具,java開發中有兩個大名鼎鼎的專案構建Maven,Ant,其中maven簡單易控深受開發者喜愛。
專案構建工具是什麼?能幹嗎?
開發某些專案時,需要很多jar或者庫的支援,還沒開始開發就下載了n多個庫,浪費了時間不說,這些庫之間相容性又無法保證。刪了?白下載了。不刪?又不相容。此時就需要使用專案構建工具,簡單的說就是一個可以根據簡單的配置檔案自動去下載相應包/庫的軟體。自動的還很簡單,不用豈不虧了。多個專案構建工具各有特點,但是核心思想一樣。
gradle的特色?
首先,goole推薦使用的Android開發工具中自帶了Gradle可見其一定有過人之處。不同於Maven基於XML檔案來完成配置,Gradle使用特定的語言(DSL)來宣告配置,難度還行,但是簡單方便。

下面是開發中的兩個build.gradle檔案

build.gradle(project MyFirst)

buildscript {
    repositories {
        jcenter()   
    //是一個類似於github的程式碼託管倉庫,聲明瞭此配置,
    //可以輕鬆引用 jcenter上的開源專案
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        //gradle是一個強大的專案構建工具,不僅可以構建Android,還可以構建java,C++等
//此處引用android的外掛 } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }

build.gradle(Module:app)

// 宣告是Android程式,
//com.android.application 表示這是一個應用程式模組
//com.android.library 標識這是一個庫模組
//而這區別:前者可以直接執行,後著是依附別的應用程式執行
apply plugin: 'com.android.application'
android { // 編譯SDK的版本 compileSdkVersion 21 // build tools的版本 buildToolsVersion "21.1.1" defaultConfig { // 應用的包名 applicationId "me.storm.ninegag" //Android支援的最低版本 minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0.0" } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } //指定生成安裝檔案的相關配置 buildTypes { release { // 是否進行混淆 minifyEnabled false // 混淆檔案的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' //proguard-android.txt 在Android SDK目錄下,裡面是所有專案的混淆規則 //proguard-rules.pro 是當前專案的根目錄下的,裡面可以編寫特有的混淆規則 } debug{ //測試版安裝檔案的配置(可以忽略) } } // 移除lint檢查的error lintOptions { abortOnError false } } //依賴關係 //本地依賴:可以對本地Jar包或目錄新增依賴關係 //庫依賴:可以對專案中的庫模組新增依賴關係 //遠端以來:可以對 jcenter庫上的開源專案新增依賴 // dependencies { // 編譯libs目錄下的所有jar包 compile fileTree(dir: 'libs', include: ['*.jar']) //依賴宣告,標識將libs目錄下多有.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') }