安卓开发必备——build.gradle文件初探(二)

1,082 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情,希望大家多多支持,帮忙点个赞,谢谢!

前言

上一篇(安卓开发必备——build.gradle文件初探(一) - 掘金 (juejin.cn))我们探讨了关于安卓项目中最外层目录下的build.gradle,这一篇我们将继续说build.gradle文件,不过是更重要的app目录下的build.gradle,因为我们日常开发的确需要去知道它的组成以及如何去使用该文件去配置项目。

正篇

首先,我们先来看看它的样子:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'org.jetbrains.kotlin.android.extensions'
}

android {
    namespace 'com.example.em3'
    compileSdk 33
    buildToolsVersion '32.1.0 rc1'

    defaultConfig {
        applicationId "com.example.em3"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        viewBinding true
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.5.0-alpha04'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
    implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

可以看到,这个文件的内容复杂度一下就上去了,下面我们逐步去分析。

应用插件

首先我们可以看到一个结构:

plugins {
    id '...'
    id '...'
    ...
}

这个是代表应用插件,而我们一开始展示的代码中可以看到它应用了三个插件,下面分别解释这三个插件:

com.android.application

我们可以看到首行应用了com.android.application这句,其实此次一般有两种值可选:com.android.application 代表这是一个应用程序模块,而com.android.library 代表这是一个库模块。这两种选择之间其实最大的差别就在于应用程序模块是可以直接运行的,而库模块只能作为代码库依附于其他应用程序模块来运行。而本项目是可以直接运行的APP应用程序项目,故采用应用程序模块。

org.jetbrains.kotlin.android & org.jetbrains.kotlin.android.extensions

这两个插件是用于Kotlin语言开发安卓项目的,org.jetbrains.kotlin.android是使项目使用Kotlin开发必备的,而org.jetbrains.kotlin.android.extensions则会方便我们使用Kotlin开发,是实现了一些非常好用的Kotlin扩展功能。

android闭包

android {
   ... 
}

在这个大闭包下我们可以去配置项目构建的各种属性:

compileSdk

是用来指定项目的编译版本,我的项目使用的33代表使用的是Android13系统的SDK编译

buildToolsVersion

这个是用于指定项目构建工具的版本,目前最新的是32.1.0 rc1, 如果有更新的版本时,一般Android Studio有提示告诉你去更新,不过Android Studio3.0后去除了此项配置,故作者为了便于展示说明所以手动加上的

defaultConfig

该闭包中可以对项目更多细节进行配置

buildTypes

用于指定生成安装文件的相关配置,通常是两个子闭包release与debug。

compileOptions

在这里你可以进行 Java 的版本配置,以便使用对应版本的一些新特性

kotlinOptions

配置Kotlin环境等属性

buildFeatures

用于配置启用viewBinding,替代findViewById

dependencies

该闭包可指定当前项目的所有依赖关系,非常强大!

总结

该文章后续还会更新内容,本文采用当前最新的项目构建,一些配置信息需要作者慢慢整理,敬请期待,谢谢各位观看支持!