尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Gradle - build.gradle 文件解读(项目级 build.gradle 文件解读、模块级 build.gradle 文件解读)

Gradle - build.gradle 文件解读(项目级 build.gradle 文件解读、模块级 build.gradle 文件解读) build.gradle文件概述build.gradle文件是一个 Gradle 的配置文件也是 Android 项目的核心组成部分build.gradle文件用于指定项目的构建逻辑、依赖关系、编译选项以及其他构建相关的设置在 Android 项目中build.gradle文件通常位于项目的根目录下项目级build.gradle文件和每个模块的目录下模块级build.gradle文件build.gradle文件使用 Groovy 编写项目级build.gradle文件解读plugins{idcom.android.applicationversion7.2.2applyfalseidcom.android.libraryversion7.2.2applyfalse}taskclean(type:Delete){delete rootProject.buildDir}1、plugins 块plugins{idcom.android.applicationversion7.2.2applyfalseidcom.android.libraryversion7.2.2applyfalse}plugins 块用于声明项目将使用的 Gradle 插件以扩展 Gradle 的功能这些插件可以添加新的任务、类型、DSL 元素等id com.android.application version 7.2.2 apply false声明了 Android 应用程序插件的 ID 和版本设置apply false表示并没有立即应用到项目中这种做法通常用于多模块项目中的根build.gradle文件以便在子模块中根据需要应用该插件id com.android.library version 7.2.2 apply false声明了 Android 库插件没有立即应用到项目中库插件用于构建可以被其他 Android 应用或库依赖的 Android 库2、task clean 块task clean(type: Delete) { delete rootProject.buildDir }task clean 块定义了一个名为 clean 的任务它使用 Delete 类型这个任务的目的是删除项目的构建目录确保每次构建都是从干净的状态开始的模块级build.gradle文件解读plugins{idcom.android.application}android{compileSdk32defaultConfig{applicationIdcom.my.networktoolminSdk21targetSdk32versionCode100versionName1.0.0testInstrumentationRunnerandroidx.test.runner.AndroidJUnitRunner}buildTypes{release{minifyEnabledfalseproguardFilesgetDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro}}compileOptions{sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}android.applicationVariants.all{variant-variant.outputs.all{outputFileNameNetworkTool_${versionName}.apk}}}dependencies{implementationandroidx.appcompat:appcompat:1.3.0implementationcom.google.android.material:material:1.4.0implementationandroidx.constraintlayout:constraintlayout:2.0.4testImplementationjunit:junit:4.13.2androidTestImplementationandroidx.test.ext:junit:1.1.5androidTestImplementationandroidx.test.espresso:espresso-core:3.4.0}1、plugins 块// plugins 块用于应用 Gradle 插件plugins{// 应用 Android 应用插件它用于构建 Android 应用idcom.android.application}2、Android 块// android 块包含了所有与 Android 构建相关的配置android{// 指定编译 SDK 的版本这是用于编译应用的 Android API 级别compileSdk32defaultConfig{// 应用的唯一标识符用于区分应用applicationIdcom.my.networktool// 应用支持的最低 Android API 级别minSdk21// 应用支持的最高 Android API 级别targetSdk32// 应用版本versionCode100// 应用版本名称versionName1.0.0// 指定用于运行测试的测试运行器// androidx.test.runner.AndroidJUnitRunner 是 AndroidX 测试库提供的 JUnit 测试运行器testInstrumentationRunnerandroidx.test.runner.AndroidJUnitRunner}// buildTypes 这个部分用于定义构建类型buildTypes{// release 这个部分用于定义 release 类型release{// 表示不对代码进行混淆在发布版本中通常会启用混淆以减少 APK 大小和增加代码难度minifyEnabledfalse// 指定 ProGuard 混淆文件的路径proguardFilesgetDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro}}// compileOptions 这个部分指定了 Java 编译器的兼容性选项compileOptions{// 源代码是用 Java8 编写编译器按照 Java8 的语法和特性来编译源代码sourceCompatibility JavaVersion.VERSION_1_8// 生成的字节码与 Java8 兼容即生成的 .class 文件可以在 Java8 或更高版本的 JVM 上运行targetCompatibility JavaVersion.VERSION_1_8}// 遍历所有的应用变体android.applicationVariants.all{variant-// variant 是当前遍历到的应用变体对象// variant.outputs.all 遍历当前变体所有的输出文件variant.outputs.all{// 设置输出文件的名称// ${versionName} 是从项目的 build.gradle 文件中获取的 versionName 属性值它是在 android 块的 defaultConfig 部分中定义的outputFileNameNetworkTool_${versionName}.apk}}}3、dependencies 块dependencies{// 引入 AndroidX AppCompat 库// AndroidX AppCompat 库提供了向后兼容的 UI 组件使得开发者能够在旧版本的 Android 系统上使用新的 UI 特性implementationandroidx.appcompat:appcompat:1.3.0// 引入 Google 的 Material Design 组件库// Material Design 组件库提供了一系列遵循 Material Design 规范的 UI 组件例如按钮、输入框、导航栏等implementationcom.google.android.material:material:1.4.0// 引入 ConstraintLayout// ConstraintLayout 是一个灵活的布局管理器implementationandroidx.constraintlayout:constraintlayout:2.0.4// 引入 JUnit 测试框架// JUnit 测试框架是一个广泛使用的 Java 测试框架用于编写和运行项目的单元测试testImplementationjunit:junit:4.13.2// 引入 AndroidX Test Extension for JUnit// AndroidX Test Extension for JUnit 为 JUnit 测试在 Android 设备或模拟器上运行提供支持androidTestImplementationandroidx.test.ext:junit:1.1.5// 引入 Espresso 测试框架// Espresso 是一个针对 Android 应用程序的用户界面的测试框架androidTestImplementationandroidx.test.espresso:espresso-core:3.4.0}代码混淆补充1、基本介绍代码混淆是一种技术通过对源代码或机器代码进行修改使其变得难以理解、阅读和逆向工程代码混淆后即使有人获得了软件的二进制版本也难以理解其工作原理或提取其中的算法、逻辑等有价值的信息代码混淆的目的通常是为了保护软件的知识产权防止未经授权的复制、修改或分析虽然代码混淆可以增加逆向工程的难度但它并不能完全防止逆向工程过度混淆的代码可能会导致性能下降或产生新的错误2、实现方式变量和函数名重命名将原本有意义的变量名和函数名替换为无意义的字符序列控制流混淆通过添加不必要的跳转、循环和条件语句改变代码的正常执行流程数据混淆对程序中使用的数据进行加密或编码代码插入在代码中插入无用的或误导性的代码段
返回列表