跳转至

Android Gradle简介

更新日期:2022-5-25
  • 2022-5-25 更新格式
  • 2022-2-3 创建文档

本文目的

本文将会介绍如下3个gradle文件

Toturial2020
├── build.gradle
├── settings.gradle
└── app
    └── build.gradle

我们已经新建了一个Android应用工程后,可以看到有好几个gradle文件。本文来简要介绍工程中的gradle文件。

项目配置文件 settings.gradle

对于Toturial2020项目来说,settings.gradle内容如下

include ':app'

这里面的:app就是我们正在用的App模块。看到这里朋友也能明白了,一个工程中可以有多个模块。 如果项目中有多个模块,settings.gradle内容如下

include ':app', ':FisherView', 'uijoystick'
上面是另一个工程settings.gradle文件。 可以看到里面有3个模块。

最外层的构建文件

这里指的是与settings.gradle同目录的build.gradle文件。我们也可以叫它“项目gradle文件”。 这个文件能对工程中所有的模块进行配置。

Toturial2020的项目gradle文件目前是这样的。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
里面指明了远程仓库有google和jcenter。 并且它包含一个清除任务(task)clean,实际上执行任务会把build目录删除掉。

未来我们要用到一些第三方库的时候,可能会修改这个文件,添加一些配置进去。具体修改要看第三方库的要求。 比如aboutView项目的gradle文件。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
里面用到了一个插件gradle-bintray-plugin,这个是之前用来上传模块用的。

app的gradle

app的gradle指的是app/build.gradle文件。这个文件配置了app模块用到的东西。

apply plugin: 'com.android.application' // (1)

android {
    compileSdkVersion 29 // (2)
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.rustfisher.tutorial2020"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    implementation 'androidx.recyclerview:recyclerview:1.1.0'
}
  1. 对app模块来说必不可少
  2. 使用的是版本为29的编译工具,这个会随着Google的更新而发展

第一行apply plugin应用了Android应用插件。 Android插件由Google团队开发维护。该插件提供构建,测试,打包应用和模块需要的所有的task。

compileSdkVersion和buildToolsVersion都指定为29。查看as的SDK Manager可以管理SDK具体版本。 对于我们的小工程来说,buildToolsVersion尽可能跟上Google发布的最新版本。

下面是android配置区域。

defaultConfig

defaultConfig区域对app核心进行配置,会覆盖AndroidManifest.xml中的配置。

applicationId指定了app的应用ID。一般来说这个字符串和AndroidManifest.xml中的package一致。 它们也可以不一致,系统会以gradle的applicationId为准。

minSdkVersion指的是支持到的最老最旧的Android API版本。19对应的是KitKat。 targetSdkVersion指的是当前的目标SDK版本。

versionCode是版本号。大的版本号可以覆盖小的版本号。 versionName是版本名。它是一个字符串,系统并不会根据它来判断版本的新旧。

testInstrumentationRunner指定的是单元测试的运行器。

buildTypes

编译配置区域。 可以看到默认会有一个release区块。它配置的是发布(release)版本。

minifyEnabled 表示打包时会启用优化功能。具体使用的是ProGuard的混淆和优化功能。 优化功能需要proguardFiles的配合。它指定了混淆的配置信息。 一般来说发布版我们会启用minifyEnabled。开发版则不启用这个功能。

这里能配置多种多样的定制打包信息。多渠道打包大都在这里进行配置。

dependencies

app模块使用到的库,或者说是“依赖”。

implementation后面指定库的名称和版本。

implementation 'androidx.appcompat:appcompat:1.1.0'
使用版本是1.1.0

用到第三方库的时候,一般会有声明,教使用者如何引入这个库。

本文也发布在

华为云社区 掘金

本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~

📖AndroidTutorial 📚AndroidTutorial 🙋反馈问题 🔥最近更新 🍪投喂作者

Ads