小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Gradle系列《一》: 基礎概念

 quasiceo 2018-08-16
2016年07月08日 13:59:52

什么是Gradle

Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基于Groovy的特定領域語言來聲明項目設置,而不是傳統(tǒng)的XML。當前其支持的語言限于Java、Groovy和Scala,計劃未來將支持更多的語言。——維基百科

以下簡要介紹幾個相關概念:
1. 建構工具做的工作包括:編譯源代碼、運行測試、拷貝Class文件到目標目錄、簽名、打包、依賴管理等。目的是讓開發(fā)人員更加專注于代碼的編寫。
2. Groovy:是Java平臺上設計的面向對象編程語言。這門動態(tài)語言擁有類似Python、Ruby和Smalltalk中的一些特性,可以作為Java平臺的腳本語言使用。Groovy的語法與Java非常相似。

相對于Ant和Maven來說,Gradle可以算是新一代的自動化構建工具,而且Gradle在基于它們的基礎上優(yōu)化的同時還可以兼容這兩者。

Gradle與Android Studio

Android Studio(以下采用縮寫AS)采用的構建工具即Gradle,Gradle可以輔助我們簡化很多復雜的操作流程如:依賴管理、多渠道打包、簽名信息配置、批量修改生成的apk文件名等,因此學習Gradle顯得更為重要。當然,以下的介紹的Gradle相關特性和使用都是以AS為例的。

Android Studio工程中與Gradle相關的目錄

使用Android Studio新建一個工程之后,其目錄結構是這樣的(需要強調一下,以下的目錄結構以及文件內容都只是新建項目時默認的樣子,更高級的用法以及特點將會在后續(xù)的章節(jié)提及):
├── app········· #Android App目錄
│ ├── app.iml···············AS識別項目的配置文件
│ ├── build··················#模塊構建輸出目錄(代碼編譯后生成的文件存放的位置、生成的Apk文件等)
│ ├── build.gradle····#module構建腳本
│ ├── libs····················· 相關庫文件目錄
│ ├── proguard-rules.pro··proguard混淆配置
│ └── src·······················源代碼,資源等

├── build··············#構建輸出目錄
│ ├── generated
│ └── intermediates

├── build.gradle·····#工程構建文件

├── gradle
│ └── wrapper

├── gradle.properties······#gradle相關的全局屬性設置
├── gradlew ·························#linux下的gradle wrapper可執(zhí)行文件
├── gradlew.bat ·················#windows下的gradle wrapper可執(zhí)行文件
├── local.properties···········配置Androod SDK位置文件
└── settings.gradle··········#工程配置
接下來詳細介紹幾個與Gradle相關的文件以及目錄:

  • build.gradle #工程構建文件
    頂級構建文件,可以為所有子項目/模塊添加常用的配置選項。
//buildscript中的聲明是gradle腳本自身需要使用的資源
//可以聲明的資源包括依賴項、第三方插件、maven倉庫地址等。
buildscript {
    repositories {
        jcenter()  //使用jcenter庫
        //mavenCentral()
    }
    dependencies {
        // 配置使用gradle所需要依賴的版本庫
        classpath 'com.android.tools.build:gradle:2.1.0'
        //注意:不要在這里配置項目所需要的依賴
    }
}

//項目自身所需要的一些配置
allprojects {
    repositories {
        jcenter()
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • app/build.gradle #module構建文件
    模塊(module)中的構建文件,對當前模塊生效。開發(fā)過程中最需要注重的一個文件,應用的相關特性都在這里進行配置。
//表示該module是一個應用(application)模塊,應用了com.android.application插件;
//(如果是一個android library,那么這里的是apply plugin:'com.android.library')
apply plugin: 'com.android.application'

//安卓項目相關的配置,后續(xù)章節(jié)將進行更為詳細的介紹
android {
    //編譯項目所用的SDK版本(即編譯時的API版本),com.android.support的版本需要與這個一致
    //建議(總是)采用最新版本
    compileSdkVersion 23
    //構建工具版本
    buildToolsVersion "23.0.3"

    defaultConfig {
        //安裝時,依據該ID區(qū)分是否為同一個應用
        applicationId "com.wiky.supporttest"

        //最低支持的系統(tǒng)版本(必須>=所有依賴庫所支持的最低版本)
        minSdkVersion 9

        //舉例說明其作用:假設我們compileSdkVersion采用了23(6.0),但是項目暫時還未對6.0的特性(如運行時權限)做相應的處理,
        //那么可以設置targetSdkVersion的版本低于23。這樣,應用仍可以正常運行在6.0的機子上(當然也就不具有運行時權限的特性)。
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    // buildTypes是構建類型,常用的有release和debug兩種,可以在這里面啟用混淆,啟用zipAlign以及配置簽名信息等。后面再具體介紹
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

//該module所需的依賴庫配置
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

PS:關于compileSdkVersion 和 buildToolsVersion這兩個版本,在我們導入一些開源的項目時,也是需要關注的。最好在導入項目之前,找到對應的build.gradle文件,然后將其版本號改為當前可正常使用的版本號(即你本地能夠順利運行的項目中對應的版本號)。這樣可以很大程度上避免導入項目時的“卡死”(構建中…)現象。

  • settings.gradle #工程配置
    這個文件是全局的項目配置文件,里面主要聲明一些需要加入 gradle 的 module,即告訴gradle項目中有哪些模塊(module)需要處理,文件內容:
//如果有多個module的話,格式如:include ':app', ':otherModule',..... 
include ':app'
  • 1
  • 2
  • gradle.properties #gradle相關的全局屬性設置
    在google開源的[iosched][1]項目中,可以看到他們利用了該文件配置了一些builde.gradle中需要用到的常(變)量, 如com.android.support. 的版本號以及簽名信息相關的配置。利用該文件進行統(tǒng)一依賴管理可參見:[Gradle統(tǒng)一依賴管理][2]

  • gradle.wrapper (Gradle Wrapper )
    它允許你的機器在不需要安裝運行的情況下就能運行Gradle腳本(我們在下載AS后可以直接開始使用gradle、開發(fā)項目,而無需另外下載及安裝gradle,主要歸功于這一特性),而且更重要的是它確保了build腳本運行在指定版本的Gradle。它會從中央倉庫中自動下載Gradle,解壓到你的文件系統(tǒng),然后用來build。

參考資料:

Gradle User Guide

Gradle In Action(Gradle實戰(zhàn))中文版

如何選擇 compileSdkVersion, minSdkVersion 和 targetSdkVersion

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多