Android开发项目中的build.gradle文件介绍

2017-10-12  本文已影响32人  琦琦出去玩了

Android开发项目中的build.gradle文件介绍

在开发android项目中,我们通常会遇到两个build.gradle文件。如下图所示:


DE125352-71D5-4425-A643-F6F0F19B676F.png

一个用于整个项目,一个用于app应用模块,对应于整个项目的内容很少,其内容如下:

B98C97F7-3362-4079-90B6-6A68EC8DA195.png

下面是具体的解释:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
// Gradle中可以使用“//”或“/**/”来添加注释,与Java类似。
// 根目录下的build.gradle用于添加子工程或模块共用的配置项。

// "buildscript"的类型为script block,而且是最上层的script block,用于配置Gradle的Project实例。其API文档为https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:buildscript(groovy.lang.Closure)
// 其余的根script block有"allprojects", "dependencies", "configurations"等,更多的可见https://docs.gradle.org/current/dsl/的“Build script structure”一节。
// Script Block是一种method的调用,传入的参数为configuration closure。执行后会对Project的属性进行配置。
// 此处的"buildscript"用于配置Project的build script的classpath。
buildscript {
    // 如果需要的话,从https://jcenter.bintray.com/下载code reposities。
    repositories {
        jcenter()
    }
    // 定义classpath,gradle会从“repositories”中下载对应版本的Gradle。如果使用gradle wrapper的话,感觉这个配置会被忽略。Wrapper会自己去下载所使用的gradle版本。
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.3'

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

// 该配置会被应用到所有的子工程。
allprojects {
    repositories {
        jcenter()
    }
}

// 运行gradle clean时,执行此处定义的task。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)。
// gradle使用groovy语言,调用method时可以不用加()。
task clean(type: Delete) {
    delete rootProject.buildDir
}

其次,我们要了解和经常编辑的是app/build.gradle文件。其内容如下:

73F07CF6-5961-41F3-8D9F-3F0A66F1A645.png

下面是具体的解释:

// 声明是Android程序,
//com.android.application 表示这是一个应用程序模块
//com.android.library 标识这是一个库模块
//而这区别:前者可以直接运行,后着是依附别的应用程序运行
apply plugin: 'com.android.application'

android {
   
    compileSdkVersion 26             // 编译SDK的版本   
    buildToolsVersion "26.0.2"      // 编译build tools的版本
    defaultConfig {                         //默认配置
        applicationId "com.example.zhangqi.myapplication"      //应用的包名
        minSdkVersion 15            //支持的最低版本
        targetSdkVersion 26       //支持的目标版本
        versionCode 1                  //版本号
        versionName "1.0"          //版本名
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {                            //build类型
        release {                              //发布
            minifyEnabled false       //混淆开启
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    //指定混淆规则文件
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])。 //编译lib目录下的.jar文件
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'

    compile 'com.squareup.retrofit2:retrofit:2.1.0'//retrofit
    compile 'com.google.code.gson:gson:2.6.2'//Gson 库
    //下面两个是RxJava 和RxAndroid
    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'//转换器,请求结果转换成Model
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//配合Rxjava 使用
    testCompile 'junit:junit:4.12'
}

上一篇下一篇

猜你喜欢

热点阅读