Gradle連載6-AndroidGradle任務之defaultConfig配置

一、android工程配置

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
    }
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23 // 還可以寫成compileSdkVersion 'android-23', 原來的寫法其實就是一個方法
    // public void compileSdkVersion(String version) {
    //    checkWritability();
    //    this.target = version
    // }
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "org.flysnow.app.test" // 配置的包名
        minSdkVersion 14 
        targetSdkVersion 23 
        versionCode 1 // 應用內部版本號,用於上級app升級
        versionName "1.0"
    }
    buildTypes { // 是一個NamedDomainObjectContainer類型,是一個域對象
        // 可以再其中新增任意多個需要構建的類型,比如debug
        release {
            minifyEnabled false // 是否啓動混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // 下面是混淆文件的加載
        }
    }
}
// android gradle工程都是在android{}中的,唯一入口

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testComplie 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:28.0.0'
    compile 'com.android.support:design:23.0.0'
}
  • android gradle 工程具體實現是com.android.build,gradle.AppExtension,是Project的一個擴展,原型爲extension = project.extension.create('android, getExtensionClass(), (PojectInternal)project, instantiator, androidBuilder, sdkHandler, buildTypeContainer, productFlavorContainer, signingConfigContainer, extraModelInfo, isLibrary())

二、defaultConfig配置

6.1

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "org,flysnow.app.example74" // 這是ProductFlavor的一個屬性,用於指定生成App的包名
        // 在構建的時候,會從AndroidManifest.xml進行讀取,也就是manifest標籤的package屬性值
        minSdkVersion 14
        targetSdkVersion 23
        verionCode 1 // 用於配置APP的內部版本號,是一個整數值,通常用於版本升級
        versionName "1.0"  // 用於配置APP的版本名稱如V1.0.0,這個是外部使用,一起配合使用
    }

    /**
     * minSdkVersion是ProductFlavor的一個方法,其原型爲
     *
     * public void minSdkVersion(int minSdkVersion) {
     *     setMinSdkVersion(minSdkVersion);
     * }
     *
     * 還可以表示爲
     * public void MinSdkVersion(@Nullable String minSdkVersion) {
     *     setMinSdkVersion(getApiVersion(minSdkVersion));
     * }
     * // 這裏的字符串是有特定的指定對應的如圖6.1
     */
}

三、源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章