Gradle目錄解析


Gradle目錄解析

Gradle 是以 Groovy 語言為基礎,面向Java應用為主。基於DSL(領域特定語言)語法的自動化構建工具。
Gradle這個工具集成了構建,測試,發布和其他,比如軟件打包,生成注釋文檔等功能。
之前eclipse使用ant進行軟件的構建功能,需要配置一大堆的xml,但是在gradle中就不需要了。

目前主流的打包方式有ant,maven,gradle。gradle是近幾年發展起來的自動化構建工具,解決ant構建上的繁瑣代碼。
比如在ant上發布多渠道的包,你需要自己寫腳本替換渠道名稱,而在gradle中就不需要了。已經內建支持多渠道打包。

Gradle的文件結構

  • ./build.gradle
  • ./gradle.properties
  • ./gradlew
  • ./gradlew.bat
  • ./local.properties
  • ./setting.gradle
  • ./XXX.iml
  • ./app/build.gradle
  • ./app/app.iml
  • ./app/proguard-rules.pro

./builld.gradle 和 ./app/build.grade

gradle項目自動編譯的時候要讀取的配置文件。比如指定項目的依賴包等。
build.grade有兩個,一個是全局的,一個是在模塊里面。
全局的build.grade主要設置的是聲明倉庫源,gradle的版本號說明等。

./build.gradle

buildscript {
    repositories {
        // 聲明倉庫源,比如我們構建了一個安卓的庫,現在想要把庫上傳到jcenter中供別人一起使用,則可以上傳到jcenter中
        // 具體上傳步驟見:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html
        jcenter()
    }
    dependencies {
        // 說明gradle的版本號
        classpath 'com.android.tools.build:gradle:1.3.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

// 所有項目都繼承這個配置
allprojects {
    repositories {
        mavenLocal()
        jcenter()
    }
}

./app/build.grade 設置了模塊的gradle構建配置

// 說明這個模塊是安卓項目,如果是多模塊開發,有可能有的值為java/war
apply plugin: 'com.android.application'

// 配置了所有android構建的參數
android {
    // 編譯使用SDK版本
    compileSdkVersion 23
    // 編譯工具的版本
    buildToolsVersion "23.0.1"

    defaultConfig {
        // 包名
        applicationId "com.awesomeproject"
        // sdk最低支持版本
        minSdkVersion 16
        // 目標SDK版本,如果目標設備的API版本正好等於此數值,就不會為此程序開啟兼容性檢查判斷的工作
        targetSdkVersion 22
        // 版本號
        versionCode 1
        versionName "1.0"
        // 原生
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        // 發布時候的設置
        release {
            // 是否進行混淆
            minifyEnabled false
            // 混淆使用文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

// 依賴的工具包
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.facebook.react:react-native:0.11.+'
}

./app/proguard-rules.pro

這個和上面說的一樣混淆文件

./gradle.properties

grade的運行環境配置,比如使用多少內存之類的。

./gradlew 和 ./gradlew.bat

自動完成 gradle 環境的腳本,在linux和mac下直接運行gradlew會自動完成gradle環境的搭建。

./local.properties

配置SDK或者NDK的環境路徑,各個機器上這個變量可能都是不一樣的,所以不應該進入版本庫

./setting.gradle

整個項目的管理,比如這個項目包含哪些模塊等。

./XXX.iml 和 ./app/app.iml

iml是Intellij模塊文件。Intellij是一款JAVA的IDE。Android Studio是基於開源的Intellij IDEA開發出來的IDE。
所以Android Studio有的IDE功能是需要有.iml才能使用的。比如我們刪除了iml文件,可能就在Android Studio中看不到一些目錄了。

參考

IDEA 及 Gradle 使用總結
使用 Gradle 管理你的 Android Studio 工程
史上最詳細的Android Studio系列教程四--Gradle基礎
用Gradle 構建你的android程序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM