1. 程式人生 > >Android Studio之基本Gradle使用

Android Studio之基本Gradle使用

Android Studio的一大特色就是自動構建工具gradle的使用。

1.配置Gradle環境變數

下載最新Gradle整包

配置Gradle的環境變數

  • 新建GRADLE_HOME目錄:

    開啟系統->高階系統設定,在彈出的選單中選擇系統變數,點選新建,輸入Gradle名稱以及目錄地址。
    這裡寫圖片描述

  • 將GRADLE_HOME目錄加入系統Path中:

    在系統變數中找到Path目錄,點選編輯,在彈出的選單中選擇新建,然後在文字框中輸入“%GRADLE_HOME%\bin”;
    這裡寫圖片描述

    如果習慣與win7等傳統模式,可以點選編輯文字按鈕
    這裡寫圖片描述

    在彈出的文字編輯框中輸入“;%GRADLE_HOME%\bin”,記住前面一定要有一個英文狀態的“;”。
    這裡寫圖片描述

    如果配置成功後,在檔案搜尋中可以輸入%GRADLE_HOME%,如果能夠正常跳轉到指定的gradle目錄,或者在CMD中輸入dir %GRADLE_HOME%列出gradle目錄的結構,則配置成功。
    這裡寫圖片描述

2.檢視Gradle版本

開啟Android Studio內建的終端

點選左下角的“Terminal”圖示:
這裡寫圖片描述

然後出現如下的終端視窗:
這裡寫圖片描述

輸入“gradlew -v”命令檢視gradle版本


在終端命令中輸入“gradlew -v”命令檢視當前的gradle版本資訊;如果
是第一次執行這個命令,系統會幫我們下載gradle到本地(此處需要翻牆,香港的伺服器快些)

在Android Studio的終端中輸入gradlew -v
這裡寫圖片描述

下載成功後可以看到儲存到了本地目錄
這裡寫圖片描述

再次輸入“gradlew -v ”則出現當前的gradle版本
這裡寫圖片描述

3.常用Gradlew命令

Gradlew命令的意義


Gradlew命令實際上就是執行的gradle-wrapper.properties中最後一行指定的路徑下的環境變數地址;
否則不同的專案可能有不同的環境變數路徑,如果使用gradle命令則需要頻繁的修改系統環境變數地址;
而gradlew命令表示當前專案下的環境變數地址。
這裡寫圖片描述

Gradlew -v


./gradlew -v 檢查當前gradlew版本

在Android Studio的終端中輸入gradlew -v
這裡寫圖片描述


可以看到當前gradle版本為2.12。

Gradlew clean


./gradlew clean 清除專案目錄下的build資料夾及依賴

在Android Studio的終端中輸入gradlew clean
這裡寫圖片描述

輸入上訴命令後,可以看到工程目錄沒有了build檔案夾了
這裡寫圖片描述

Gradlew build


./gradlew build 檢查依賴並編譯打包

在Android Studio的終端中輸入gradlew build,此命令把debug/release環境包都打出來,可以檢視build->outputs->apk
這裡寫圖片描述

如果在編譯的過程中出現如下錯誤,可以在錯誤報告指向的地址中檢視詳細的錯誤資訊;紅色部分指明瞭錯誤的型別;在最下面提供瞭解決辦法。
這裡寫圖片描述

Gradlew assemble


./gradlew assembleDebug 編譯並打Debug包

在Android Studio的終端中輸入gradlew assembleDebug
這裡寫圖片描述
可以檢視build->outputs->apk多了xx-debug.apk和xx-debug-unaligned.apk。

./gradlew assembleRelease 編譯並打Release包

在Android Studio的終端中輸入gradlew assembleRelease
這裡寫圖片描述
可以檢視build->outputs->apk多了xx-release-unaligned.apk,如果正式釋出只需要打Release的包,則需要上訴assembleRelease命令。

除此之外


assemble還可以和productFlavors結合使用,具體在下一篇多渠道打包進一步解釋。
• ./gradlew installRelease Release模式打包並安裝
• ./gradlew uninstallRelease 解除安裝Release模式包
下一篇來介紹用Gradle進行方便的多渠道打包,以及專案中完整的Gradle配置。有問題或建議歡迎大家直接部落格留言。

4.命令方式簽名

開啟Project Stucture圖形化介面,選中專案名稱,再選擇右邊Signing項中的”+”
這裡寫圖片描述

將右側的config改名為release和debug並填寫簽名信息,點選下面OK
這裡寫圖片描述

然後分別在release/debug欄選擇對應的簽名配置資訊(上面所填)
這裡寫圖片描述

點選OK後這個module的build.gradle檔案多出瞭如下簽名資訊
這裡寫圖片描述

點選clean project
這裡寫圖片描述
輸入gradlew assembleReleas生成以上配置後的簽名apk,可以在build->outputs->apk中檢視。

5.BuildConfig檔案

自動生成的buildConfig


buildConfig是IDE自動生成的一個類,在eclipse中即存放在gen目錄下(如R檔案);而在Android Studio中,BuildConfig檔案存放的位置是:app/build/generated/source/buildconfig/dubug//BuildConfig.java中。

主要是指定該專案的名稱、版本資訊等,如下圖所示:
這裡寫圖片描述

module中的build.gradle


指定應用程式的module為該module

apply plugin: 'com.android.application'

指定打包時排除重複多餘的檔案

/** 打包選項 */
packagingOptions {
    exclude “…”
}

指定編譯的版本配置資訊等

/** 預設配置資訊 */
defaultConfig {
    applicationId "com.xx.xx.xx "
    minSdkVersion 16 // 清單檔案中不需要再次配置
    targetSdkVersion 23
    versionCode 20160523
    versionName "1.01.14"
    multiDexEnabled true // dex突破65535的限制
}

指定在構建時忽略錯誤資訊

/** 執行lint檢查 */
lintOptions {
    abortOnError false 
}

指定命令方式簽名的簽名信息

/** 設定簽名路徑 */
signingConfigs {
    debug {
        keyAlias 'key..'
        keyPassword 'password..'
        storeFile file('E:/ADS/keystore.jks')
        storePassword ' password..'
    }
    release {
        keyAlias 'key..'
        keyPassword ' password..'
        storeFile file('E:/ADS/keystore.jks')
        storePassword ' password..'}
}

指定編譯規則等

/** 編譯生成型別 */
buildTypes {
    release {
        buildConfigField "boolean", "LOG_DEBUG", "false"//不Log
        minifyEnabled true  // 混淆
        zipAlignEnabled true // Zipalign優化
        shrinkResources true // 移除無用的resource檔案
        // 載入預設混淆配置檔案 progudard-android.txt在sdk目錄裡面,不用管,proguard.cfg是我們自己配<span></span>的混淆檔案
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
        signingConfig signingConfigs.release  // 簽名
    }
}

6.gradle匯入第三方包

匯入方法


首先刪除libs下的離線gson-2.6.2包

點選專案的依賴“Dependencies”設定介面中的“+”
這裡寫圖片描述

在彈出的介面中輸入gson,然後點選右邊的搜尋圖示,在搜尋結果中選中
這裡寫圖片描述

點選OK後,可以在build.gradle中看到依賴中多了一行
這裡寫圖片描述
此時gson庫已經不在libs下,而在External Libraries下。

匯入優缺點


相比libs下的導包,gradle匯入jar包更方便,一行程式碼即可搞定。不需
要下載離線安裝包,並且如果官方jar包更新了,我們只需要在build.gradle中改一下版本號就行了,不用重新去官網下載。

但是gradle匯入需要翻牆。

匯入從哪裡來


在build.gradle檔案的開頭就有jcenter():

buildscript {
    repositories {
        // 所有通過gradle匯入的jar包都是從http://bintray.com/bintray/jcenter這個中央倉庫上扒下來的
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}

如果你需要的jar包在這個網站上沒有,那就無法通過gradle的方式來匯入。