一、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
     */
}

三、源码

posted on 2022-06-16 00:04  心悦君兮君不知-睿  阅读(302)  评论(0编辑  收藏  举报