Android Studio開發Android(一)——build.gradle文件詳解

Android Studio採用Gradle構建項目。項目中又兩個build.gradle文件,一個在最外層的目錄中,一個在app目錄下。android

最外層目錄的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter() //代碼託管倉庫
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"  //構建Android項目,須要引用

        // 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
}

app目錄下的build.gradle

apply plugin: 'com.android.application' //應用程序模塊(直接運行),還有一個值可選com.android.library庫模塊(依賴別的應用程序模塊)

android {  //android閉包,配置項目構建的各類屬性。
    compileSdkVersion 29    //項目的編譯版本
    buildToolsVersion "30.0.0"  //項目構建工具的版本

    defaultConfig {                 //對項目更多細節配置
        applicationId "com.et.helloworld"          //項目的包名,若是想要修改包名,直接在這修改
        minSdkVersion 23            //項目最低兼容的Android系統版本
        targetSdkVersion 29         //在目標版本上作過充分的測試,系統爲應用程序啓用一些最新的功能和特性。
        versionCode 1               //項目版本號
        versionName "1.0"           //項目的版本名。

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"  //testInstrumentationRunner代表要使用AndroidJUnitRunner進行單元測試
    }

    buildTypes {    //用於指定生成安裝文件的相關配置,兩個包,一個是debug,一個是release。debug閉包用於指定生成測試版安裝文件的配置。release用於生成正式版安裝文件的配置。debug能夠忽略不寫。
        release {
            minifyEnabled false    //用於指定是否對項目的代碼進行混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            //指定混淆時的規則文件。proguard-android-optimize.txt是Android SDK目錄下的。proguard-rules.pro項目根目錄下的。
        }
    }
}

dependencies { //指定當前項目全部的依賴關係。一共又三種依賴方式:本地依賴,庫依賴,遠程依賴。
    implementation fileTree(dir: "libs", include: ["*.jar"])  //本地依賴聲明,表示將libs目錄下全部.jar後綴的文件都添加到項目構建路徑中。
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.annotation:annotation:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}
相關文章
相關標籤/搜索