build.gradle.kts 配置解读

Android 开发

build.gradle.kts 配置解读
首先清楚一点,Gradle 是一个构建工具,面向开发者的脚本语言是 Groovy 和 Kotlin,Groovy 脚本对应 build.gradle,Kotlin 脚本对应 build.gradle.kts
在 Gradle 中,大量配置都是通过脚本语言来进行编写的,所以不管是 Groovy 还是 Kotlin,最后表现都是 DSL(Domain Specific Language) 领域特定语言
plugins 配置
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的一层封装,versionapply被封装在此对象中

version :插件的版本号,第三方插件需要提供版本号
apply : 是否将插件应用于当前项目以及其子项目,默认是 true ,这个是用来解决控制依赖传递的

android 配置
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版本等)

  1. namespace = "com.example.trytounderstand" 这个属性指定了 android 应用程序的命名空间,这个通常是应用程序的包名,用于唯一标识应用程序。
  2. complieSdk = 34 指定用于编译应用程序的 Android SDK 版本。在这里,应用程序将使用 API 版本 34 进行编译。
  3. buildFeatures { viewBinding = true }: 启用了视图绑定功能。视图绑定允许通过生成的绑定类直接引用布局文件中的视图,而无需使用 findViewById 方法。
  4. defaultConfig{...} 这是默认的应用程序配置模块
    • applicationId = “com.example.trytounderstand”: 应用程序的包名,唯一标识该应用程序。
    • minSdk = 24: 应用程序的最低支持的 Android 版本,即运行该应用程序所需的最低 API 级别。
    • targetSdk = 34: 应用程序被设计和测试的目标 Android 版本。
    • versionCode = 1: 用于标识应用程序版本的整数值,每次发布新版本时必须递增。
    • versionName = releaseTime(): 应用程序的版本名称,通常是可读的字符串。在这里,它调用了一个函数 releaseTime() 来获取版本名称。
  5. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner":
    • 指定用于运行测试的测试仪器运行器。在这里,它是 AndroidJUnitRunner,用于运行基于 JUnit 的测试。
  6. vectorDrawables { useSupportLibrary = true }:
    • 配置矢量图标的支持。在这里,它启用了对矢量图标的支持,并使用了支持库(support library)。
  7. buildTypes:
    • 这个部分用于配置不同的构建类型,例如 “release” 或 “debug”。在这里,只定义了 “release” 构建类型。
    • isMinifyEnabled = false: 禁用代码混淆,这是一种安全性手段,但在调试和分析时可能会带来困难。
    • proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"): 指定 ProGuard 配置文件,用于代码压缩和混淆。这里使用了一个默认的 Android 优化配置文件和一个自定义的规则文件。代码混淆就是吧代码中的类和方法以及字段等符号重新命名为没有意义的名字,使得反编译之后的代码难以阅读,属于天机工程了属于是。
  8. compileOptions:
    • 用于配置 Java 编译选项。
    • sourceCompatibility = JavaVersion.VERSION_1_8: 指定源代码的 Java 版本兼容性,这里设置为 Java 8。
    • targetCompatibility = JavaVersion.VERSION_1_8: 指定生成的字节码的目标 Java 版本兼容性,也设置为 Java 8。
  9. kotlinOptions:
    • 用于配置 Kotlin 编译选项。
    • jvmTarget = "1.8": 指定生成的 Kotlin 字节码的目标 JVM 版本,这里设置为 JVM 8。
  10. buildFeatures:
    • 包含一些构建特性的配置。
    • compose = true: 启用 Jetpack Compose,这是一种用于构建 Android 用户界面的声明性 UI 工具包。
  11. composeOptions:
    • 包含有关 Jetpack Compose 的特定配置。
    • kotlinCompilerExtensionVersion = “1.5.1”: 指定使用的 Kotlin 编译器扩展版本。
  12. packaging:
    • 用于配置构建输出的打包选项。
    • resources { excludes += “/META-INF/{AL2.0,LGPL2.1}” }: 排除特定的资源文件,这里排除了指定路径下的一些文件,通常用于处理第三方库的冲突或不必要的资源。
  • 42
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值