Gradle
版本:gradle-8.0
Android Studio
版本:Android Studio Giraffe | 2022.3.1 Patch 3
.gradle
文件夹- 作用:存储
Gradle
缓存和构建信息 - 内容:包括
Gradle
构建缓存、已下载的依赖项等。这个文件夹可以安全地删除,Gradle
会在下次构建时重新生成它
- 作用:存储
.idea
文件夹- 作用:存储与
IntelliJ IDEA
(Android Studio
基于的IDE
)相关的项目配置 - 内容:包括项目和模块设置、代码样式、运行配置等。这个文件夹对于项目在
Android Studio
中的正确打开和运行是必要的
- 作用:存储与
.gitignore
文件- 作用:
Git
配置文件,指定哪些文件和文件夹不应被版本控制系统(Git
)跟踪 - 内容:通常包括忽略编译输出、用户特定的配置文件、
Gradle
缓存等
- 作用:
gradle
文件夹- 作用:包含
Gradle Wrapper
的配置 - 内容:包含一个
wrapper
子文件夹,其中包括gradle-wrapper.properties
文件和gradle-wrapper.jar
文件,用于确保项目使用正确版本的Gradle
,把项目代码共享给其他人使用时,有可能伙伴没有安装gradle
或者gradle
版本过旧而无法运行代码,这个时候需要用到Gradle Wrapper
,gradle -v
是查看电脑全局的gardle版本,/.gradlew -v
是查看当前工程文件的局部版本gradle-wrapper.jar
:包含Gradle Wrapper
实现的JAR
文件,负责下载和执行指定版本的Gradle
gradle-wrapper.properties
:一个配置文件,用于指定项目使用的Gradle
版本及其下载位置
- 作用:包含
bash
#Tue Aug 13 10:39:46 CST 2024
distributionBase=GRADLE_USER_HOME //指定 Gradle 发行版的基础存储位置
distributionPath=wrapper/dists // 指定相对于 distributionBase 基础目录的子路径
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip //下载Gradle版本的URL
zipStoreBase=GRADLE_USER_HOME // 存储 ZIP 文件的基础存储位置
zipStorePath=wrapper/dists //指定相对于 zipStoreBase 基础目录的子路径
build.gradle
(Project
级别)- 作用:项目级别的
Gradle
构建文件 - 内容:定义了全局的构建配置和依赖项管理,包括各个模块的构建依赖和构建配置。
plugins
块用于声明项目或模块所需的插件及其版本,apply false
来延迟应用提高项目的构建管理效率
groovy
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.1.3' apply false
id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
}
app
文件夹- 作用:存储应用的源代码和资源。
- 内容:
src/main/java
:Java
或Kotlin
源代码src/main/res
:应用的资源文件(如布局、字符串、图像等)src/main/AndroidManifest.xml
:应用的清单文件,定义了应用的组件和权限build.gradle (Module 级别)
:模块级别的Gradle
构建文件,定义了该模块的构建依赖和构建配置
groovy
plugins {
id 'com.android.application' // 应用 Android 应用程序插件,用于构建 Android 应用
id 'org.jetbrains.kotlin.android' // 应用 Kotlin Android 插件,用于支持在 Android 项目中使用 Kotlin 编程语言
}
android {
namespace 'com.yang.gradleDemo' // 定义应用程序的命名空间,用于生成 R 类和其他资源
compileSdk 33
defaultConfig {
applicationId "com.yang.gradleDemo" // 应用程序的唯一标识符
minSdk 24
targetSdk 33
versionCode 1 // 应用程序的版本代码,用于内部版本管理
versionName "1.0" // 应用程序的版本名称,显示给用户
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 指定用于运行仪器测试的测试运行器
}
buildTypes {
release { // 定义发布版本的构建类型
minifyEnabled false // 是否启用代码缩减(ProGuard/R8),这里设置为不启用
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 指定 ProGuard 配置文件,用于代码混淆和优化
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 // 指定 Java 源代码的兼容性版本
targetCompatibility JavaVersion.VERSION_1_8 // 指定编译后的字节码的兼容性版本
}
kotlinOptions {
jvmTarget = '1.8' // 指定 Kotlin 编译器生成与 Java 8 兼容的字节码
}
}
// 各种依赖
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
settings.gradle
文件- 作用:定义项目的设置,包括哪些模块包含在项目中
- 内容:列出所有包含在项目中的模块
groovy
pluginManagement { // 配置插件管理,包括插件仓库
repositories { // 指定用于解析插件的仓库
google() // Google 的 Maven 仓库,常用于 Android 相关插件
mavenCentral() // Maven 中央仓库,广泛用于各种 Java 和 Kotlin 插件
gradlePluginPortal() // Gradle 官方的插件门户,包含各种 Gradle 插件
}
}
dependencyResolutionManagement { // 配置依赖解析管理,包括依赖项仓库
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) // 设置仓库模式为 FAIL_ON_PROJECT_REPOS,防止在项目级别配置仓库
repositories { // 指定用于解析依赖项的仓库
google() // Google 的 Maven 仓库,常用于 Android 相关库
mavenCentral() // Maven 中央仓库,广泛用于各种 Java 和 Kotlin 库
}
}
rootProject.name = "gradleDemo" // 设置根项目的名称为 "gradleDemo"
include ':app' // 包含名为 ":app" 的子项目或模块
gradle.properties
文件- 作用:
Gradle
的配置文件,定义项目构建过程中的一些全局属性 - 内容:可以设置内存使用、守护进程配置等
- 作用:
groovy
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 // 设置 JVM 参数以优化 Gradle 构建过程的性能和兼容性
android.useAndroidX=true // 启用 AndroidX 库,确保项目使用最新的支持库
kotlin.code.style=official // 设置 Kotlin 代码风格,确保团队成员遵守统一的代码规范
android.nonTransitiveRClass=true // 启用非传递性的 R 类,减少构建时间和方法数,特别是在多模块项目中
. gradlew
- 作用:
Linux/macOS
上的Gradle Wrapper
脚本 - 内容:用于在没有安装
Gradle
的情况下运行项目的构建
- 作用:
gradlew.bat
- 作用:
Windows
上的Gradle Wrapper
脚本 - 内容:用于在没有安装
Gradle
的情况下运行项目的构建
- 作用:
local.properties
- 作用:定义本地机器上的特定属性,如
SDK
的路径 - 内容:通常包含
Android SDK
的路径
- 作用:定义本地机器上的特定属性,如