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

简介: 上一篇(安卓开发必备——build.gradle文件初探(一) - 掘金 (juejin.cn))我们探讨了关于安卓项目中最外层目录下的build.gradle,这一篇我们将继续说build.gradle文件

前言

上一篇(安卓开发必备——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

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

总结

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

相关文章
|
13小时前
|
Java 测试技术 Android开发
Android Gradle 干货,看这篇文章就行了
Android Gradle 干货,看这篇文章就行了
|
1天前
|
Android开发
Android studio 2021.3.1不生成iml文件
Android studio 2021.3.1不生成iml文件
16 5
|
2天前
|
Android开发
Android stdio 无法新建或打开AIDL文件(解决方法)
Android stdio 无法新建或打开AIDL文件(解决方法)
11 0
|
2天前
|
Android开发
android string.xml文件中的整型和string型代替
android string.xml文件中的整型和string型代替
|
2天前
|
Java Android开发
Android零基础入门(二)gradle的安装和详解
Android零基础入门(二)gradle的安装和详解
17 0
|
2天前
|
Android开发
android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限
android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限
27 0
|
2天前
|
XML Android开发 数据安全/隐私保护
android 11后文件读写访问权限申请
android 11后文件读写访问权限申请
17 0
|
2天前
|
JSON Android开发 数据格式
Android 打开系统文件管理器,并返回选中文件的路径
Android 打开系统文件管理器,并返回选中文件的路径
15 0
|
2天前
|
Java Android开发 C++
Android源代码定制:MK文件执行顺序|属性覆盖
Android源代码定制:MK文件执行顺序|属性覆盖
21 2
Android源代码定制:MK文件执行顺序|属性覆盖
|
2天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
65 1