解析build.gradle文件


Gradle是一個非常先進的項目構建工具,它使用了一種基於Groovy的領域特定語言DSL來聲明項目設置,摒棄了傳統XML(如Ant和Maven)的各種繁瑣配置

 

項目結構如上圖:

1、最外層目錄下的build.gradle文件(通常情況下不需要修改這個文件內容),代碼如下所示:

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

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

(1)這些代碼都是自動生成的,兩處repositories的閉包中都聲明了jcenter()這行配置,jcenter是一個代碼托管倉庫,配置之后我們能夠輕松引用任何jcenter上的開源項目。

(2)dependencies閉包中使用classpath聲明了一個Gradle插件。最后面部分為插件版本號

2、app目錄下的build.gradle文件,代碼如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
   buildeToolsVersion “24.0.2” defaultConfig { applicationId "com.example.kpp.test01" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' implementation 'com.android.support.constraint:constraint-layout:1.1.2' implementation 'com.android.support:design:28.0.0-alpha3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'de.hdodenhof:circleimageview:2.1.0' implementation 'com.github.bumptech.glide:glide:3.8.0' implementation 'com.google.zxing:zxing-parent:3.3.3' implementation 'com.lzy.net:okhttputils:+' compile 'org.xutils:xutils:3.5.0' compile 'com.amap.api:3dmap:latest.integration' compile 'com.amap.api:location:latest.integration' }

(1)第一行應用了一個插件,一般有兩種值可選:com.android.application表示是一個應用程序模塊,com.android.library表示是一個庫模塊。應用程序模塊和庫模塊的最大區別在於,一個是可以直接運行,一個只能作為代碼庫依附於別的應用程序模塊來運行

(2)android閉包,這個閉包中可以配置項目構建的各種屬性:

  complieSdkVersion用於指定項目的編譯版本,這個指定成24表示使用Android 7.0系統的SDK編譯;

  buildToolsVersion用於指定項目構建工具的版本,當前使用的是24.0.2;

  android閉包中嵌套了一個defaultConfig閉包,defaultConfig閉包中可以對項目的更多細節進行配置:

    applicationId用於指定項目的包名;

    minSdkVersion用於指定項目最低兼容的Android版本,這里指定成15表示最低兼容到Android 4.0系統;

    targetSdkVersion指定的值表示在該目標版本上已經做了充分的測試,系統將會為你的應用程序啟用一些最新的功能和特性,如;

    versionCode用於指定項目的版本號;

    versionName用於指定項目的版本名;

    testInstrumentationRunner表示采用的測試框架;

(3)buildType閉包用於指定生成安裝文件的相關配置,通常只會有兩個子閉包,一個是debug,一個是release。debug閉包用於指定生成測試版本安裝文件的配置,release閉包用於指定生成正式版本安裝文件的配置。

  minifyEnabled用於指定是否對項目的代碼進行混淆,true表示混淆,false表示不混淆;

  proguardFile用於指定混淆時使用的規則文件,這里指定了兩個文件,第一個proguard-android.txt是在Android SDK目錄下的,里面是所有項目通用的混淆規則,第二個proguard-rules.pro是在當前項目的根目錄下的,里面可以編寫當前項目特有混淆規則。

(4)dependencies閉包,指定當前項目所有依賴。Android Studio項目共有3種依賴方式:本地依賴,庫依賴和遠程依賴。


免責聲明!

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



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