《Gradle for Android》核心总结(一)Gradle文件

Gradle文件

如上图,当咱们使用 Android Studio建立一个新项目时,会默认生成三个Gradle文件。其中的两个文件为 settings.gradlebuild.gradle位于项目的根目录。另一个 build.gradle文件则在Android的app模块内被建立。

settings.gradle

对于一个只包含一个Android应用的新项目来讲,settings.gradle的内容以下,表示app模块应该包含在构建内:android

include':app'bash

settings.gradle文件在初始化阶段被执行,而且定义了哪些模块应该包含在构建内。app

注意:单模块项目并不必定须要setting文件,可是多模块项目必需要有setting文件,不然,Gradle不知道哪一个模块应包含在构建内。测试

根目录下的build.gradle

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}
复制代码
  • buildscript:在里面进行具体的构造配置
  • repositories:指定代码仓库,设置依赖时,从该代码仓库下载
  • dependencies:配置构建过程的依赖包。默认状况下,惟一被定义的依赖包是GradleAndroid插件。每一个Android模块都须要有Android插件,由于该插件中定义了执行Android的相关任务。
  • allprojects:声明应用到全部模块的属性,若是模块中的build.gradle的设置与根目录下的build.gradle文件中的allprojects设置冲突,则模块中的设置覆盖根目录下的设置。

模块下的build.gradle

下面是app模块下的build.gradle的代码:gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
    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:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    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'
}
复制代码

插件

第一行apply plugin: 'com.android.application'表示应用Android插件,该插件在顶层构建文件中被配置成了依赖ui

dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
    }
复制代码

android

android代码块包含了所有的Android特有配置,这些特有配置之因此可被使用,是由于以前咱们使用了Android插件。配置以下:google

compileSdkVersion

compileSdkVersion是要用来声明编译应用的Android API版本。spa

defaultConfig

defaultConfig代码块用于配置应用的核心属性。此代码块中的属性可覆盖Android.Manifest.xml文件中对应的条目操作系统

  • applicationId:该属性覆盖了manifest文件中的packagename

applicationIdpackagename的区别:在应用构建以前, AndroidManifest.xml中的package name 有两个用途:1.做为一个应用的惟标符,2.在R 资源类中被用做包名。在构建后定义在manifest 文件中的 package,继续用在你的源代码和 R 类中,而以前被用做设备惟一标识的 package name, 如今则被称之为applicationId插件

  • minSdkVersion : 用来配置运行应用的最小 APl 级别
  • targetSdkVersion : 用于通知系统, 该应用已经在某特定 Android 版本经过测试, 从而操做系统没必要启用任何向前兼容 的行为。 这和咱们以前看到的 compileSdkVersion 没有任何关系。
  • versionCode : 定义版本号
  • versionName : 定义版本号名称

若是你在 build.gradle 中定义了它们, 就没有必要在 manifest 文件中再去定义。 若是构建 文件不包含某个属性, 那么 manifest 中的该属性就会被用做后备。

buildTypes

buildTypes代码块可用来定义如何构建和打包不一样构建类型的应用

dependencies

依赖代码块是标准 Gradle 配置的部分(这就是其放在 android 代码块以外的缘由), 其定义了个应用或依赖项目的全部依赖包。

相关文章
相关标签/搜索