使用Kotlin DSL和buildSrc
来创建Android项目可以极大地提升构建脚本的可读性和可维护性。以下是详细步骤和相关概念:
buildSrc
是Gradle中的一个特殊目录,用于存放可重用的构建逻辑。任何放在buildSrc
目录下的代码都会被自动编译成一个包含在构建脚本类路径中的JAR文件。这使得你可以创建自定义的Gradle插件和任务,并在整个项目中重用它们。首先,使用Android Studio创建一个新的Android项目。选择“Empty Activity”模板,并确保选择Kotlin作为编程语言。
build.gradle
文件在项目的根目录下,你会看到两个build.gradle
文件:
build.gradle
(项目级)build.gradle
(模块级)build.gradle
将项目级的build.gradle
文件转换为Kotlin DSL:
// build.gradle.kts (Project Level)
plugins {
id("com.android.application") version "7.0.0" apply false
id("org.jetbrains.kotlin.android") version "1.5.21" apply false
}
allprojects {
repositories {
google()
mavenCentral()
}
}
build.gradle
将模块级的build.gradle
文件也转换为Kotlin DSL:
// build.gradle.kts (Module Level)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
compileSdkVersion(30)
defaultConfig {
applicationId = "com.example.myapp"
minSdkVersion(21)
targetSdkVersion(30)
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
}
dependencies {
implementation("androidx.core:core-ktx:1.6.0")
implementation("androidx.appcompat:appcompat:1.3.1")
implementation("com.google.android.material:material:1.4.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.0")
}
buildSrc
目录在项目的根目录下创建一个名为buildSrc
的目录,并在其中创建以下文件结构:
buildSrc/
├── build.gradle.kts
└── src/
└── main/
└── kotlin/
└── com/
└── example/
└── myapp/
└── BuildConfig.kt
buildSrc/build.gradle.kts
// buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
}
在BuildConfig.kt
文件中创建自定义配置类:
// buildSrc/src/main/kotlin/com/example/myapp/BuildConfig.kt
object Versions {
const val kotlin = "1.5.21"
const val androidGradlePlugin = "7.0.0"
// 添加其他版本信息
}
object Dependencies {
const val coreKtx = "androidx.core:core-ktx:1.6.0"
const val appcompat = "androidx.appcompat:appcompat:1.3.1"
const val material = "com.google.android.material:material:1.4.0"
const val constraintlayout = "androidx.constraintlayout:constraintlayout:2.1.0"
// 添加其他依赖信息
}
现在,你可以在模块级的build.gradle.kts
文件中使用这些自定义配置:
// build.gradle.kts (Module Level)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
compileSdkVersion(30)
defaultConfig {
applicationId = "com.example.myapp"
minSdkVersion(21)
targetSdkVersion(30)
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
}
dependencies {
implementation(Dependencies.coreKtx)
implementation(Dependencies.appcompat)
implementation(Dependencies.material)
implementation(Dependencies.constraintlayout)
}
buildSrc
可以将常用的构建逻辑封装起来,方便在整个项目中重用。buildSrc
可以提高构建脚本的可维护性。buildSrc
目录未被识别原因: 可能是由于Gradle缓存问题或目录结构不正确。
解决方法: 清理Gradle缓存并重新构建项目:
./gradlew clean build --refresh-dependencies
原因: 可能是由于项目中使用的Kotlin版本与buildSrc
中的版本不一致。
解决方法: 确保所有地方的Kotlin版本一致,并在build.gradle.kts
文件中明确指定版本号。
通过以上步骤,你可以成功使用Kotlin DSL和buildSrc
来创建和管理Android项目。
领取专属 10元无门槛券
手把手带您无忧上云