赞
踩
build.gradle.kts
配置解读首先清楚一点,Gradle 是一个构建工具,面向开发者的脚本语言是 Groovy 和 Kotlin,Groovy 脚本对应 build.gradle,Kotlin 脚本对应 build.gradle.kts
在 Gradle 中,大量配置都是通过脚本语言来进行编写的,所以不管是 Groovy 还是 Kotlin,最后表现都是 DSL(Domain Specific Language) 领域特定语言
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
这个配置是在 Gradle
构建脚本中,声明了两个插件,插件名是 com.android.application
(用于支持和构建 Android
应用程序所需的基本配置和任务)和 org.jetbrains.kotlin.android
(用于支持Android
项目中使用 Kotlin
语言)
[!注意]
plugin
有 id 三个参数配置项:
id
: 调用的是PluginDependenciesSpec
中的id(String id)
函数,返回PluginDependencySpec
对象,PluginDependencySpec
对象可以理解为是PluginDependenciesSpec
的一层封装,version
和apply
被封装在此对象中
version
:插件的版本号,第三方插件需要提供版本号
apply
: 是否将插件应用于当前项目以及其子项目,默认是true
,这个是用来解决控制依赖传递的
android { namespace = "com.example.trytounderstand" compileSdk = 34 buildFeatures { viewBinding = true } defaultConfig { applicationId = "com.example.trytounderstand" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = releaseTime() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables{ useSupportLibrary = true } } buildTypes { release { isMinifyEnabled = 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 { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.1" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } }
android
是用于配置 Android
应用程序的属性和设置。比如说(应用程序包名,编译的SDK版本,默认配置信息,构建类型,Kotlin版本等)
namespace = "com.example.trytounderstand"
这个属性指定了 android
应用程序的命名空间,这个通常是应用程序的包名,用于唯一标识应用程序。complieSdk = 34
指定用于编译应用程序的 Android SDK 版本。在这里,应用程序将使用 API 版本 34 进行编译。buildFeatures { viewBinding = true }:
启用了视图绑定功能。视图绑定允许通过生成的绑定类直接引用布局文件中的视图,而无需使用 findViewById
方法。defaultConfig{...}
这是默认的应用程序配置模块
releaseTime()
来获取版本名称。 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
:
AndroidJUnitRunner
,用于运行基于 JUnit
的测试。vectorDrawables { useSupportLibrary = true }
:
buildTypes
:
isMinifyEnabled = false
: 禁用代码混淆,这是一种安全性手段,但在调试和分析时可能会带来困难。proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
: 指定 ProGuard
配置文件,用于代码压缩和混淆。这里使用了一个默认的 Android 优化配置文件和一个自定义的规则文件。代码混淆就是吧代码中的类和方法以及字段等符号重新命名为没有意义的名字,使得反编译之后的代码难以阅读,属于天机工程了属于是。compileOptions:
sourceCompatibility = JavaVersion.VERSION_1_8
: 指定源代码的 Java 版本兼容性,这里设置为 Java 8。targetCompatibility = JavaVersion.VERSION_1_8
: 指定生成的字节码的目标 Java 版本兼容性,也设置为 Java 8。kotlinOptions
:
Kotlin
编译选项。jvmTarget = "1.8"
: 指定生成的 Kotlin
字节码的目标 JVM 版本,这里设置为 JVM 8。buildFeatures:
compose = true
: 启用 Jetpack Compose
,这是一种用于构建 Android 用户界面的声明性 UI 工具包。composeOptions
:
packaging
:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。