详解build.gradle文件

1.外层目录下的build.gradle文件

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

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

allprojects {
    repositories {
        jcenter()
    }
}

 两处repositories闭包中都包含了jcenter这行配置,jcenter是一个代码托管库,很多Android开源项目都会选择将代码托管到jcenter上,声明了这行配置后,就可以在项目中引用任何jcenter上的开源项目了。

接下来,dependencies闭包中使用classpath声明了一个gradle插件。gradle并不是专门为构建android项目开发的,java,c++等很多种项目都可以使用gradle来构建,因此要使用gradle来构建android项目需要声明com.android.tools.build:gradle:3.1.4这个插件。

2.app目录下的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.zhy.statusbartest"
        minSdkVersion 21
        targetSdkVersion 26
        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(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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'
}

 第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。两者的区别是,前者可以直接运行,后者只能作为代码库依附于别的应用程序模块来运行。

在android闭包中,我们可以配置项目构建的各种属性。complieSdkVersion用于指定项目的编译版本,这里指定为26,表示用android8.0版本的SDK进行编译。

defaultConfig闭包中可以对项目进行更多的细节配置。applicationId用于指定项目的包名。minSdkVersion用于指定项目最低兼容的android系统版本,这里指定为21,表示最低兼容到android5.0系统。targetSdkVersion指定的值表示你在该目标版本上已经做了充分的测试。versionCode用于指定项目的版本号,versionName用于指定项目的版本名。

buildTypes闭包用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个debug,一个release。debug闭包用于生成测试版安装文件的配置,release闭包用于指定生成正式版安装文件的配置。debug闭包可以忽略不写。

minifyEnabled用于指定是否对项目的代码进行混淆,true表示混淆,false表示不混淆。proguadFiles用于指定混淆时使用的规则文件,这里指定了两个文件,第一个proguard-android.txt是在android SDK目录下的,里面是所有项目通用的混淆规则,第二个是proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。

dependencies闭包指定当前项目所有的依赖关系:本地依赖,库依赖,远程依赖。implementation fileTree就是一个本地依赖声明,它表示将libs目录下的所有.jar后缀的文件都添加到项目的构建路径中。implementation则是远程依赖声明,com.android.support:appcompat-v7:26.1.0就是一个标准的远程依赖库格式,其中com.android.support是域名部分,用于和其他公司的库做区别,appcompat-v7是组名称,用于和同一个公司中不同库做区分,26.1.0是版本号。

猜你喜欢

转载自blog.csdn.net/zhaohuiyang_949/article/details/81712247