逐步指南实现版本目录(Gradle Team开发的依赖关系管理工具)
版本目录是由Gradle团队开发的依赖关系管理工具。使用它的好处是,您不需要在多个位置中进行硬编码版本,尤其是如果您有多模型项目。 本文提供了使用Android Studio将版本目录集成到Android应用中的分步指南。该示例基于此clean empty Jetpack Compose app template。 运行版本目录的最低Gradle版本要求为7.4。但是,版本7.4.2包含最新修复程序。 在终端中,检查您的Gradle版本。 如果小于7.4.2,请升级。 运行上述命令后,更新了 如果您对 *.kts感到好奇,那是Gradle Kotlin脚本。有关更多信息,您可以参考此博客文章。 创建此 build.gradle.kts(root/project级别) 替换 与 app \ build.gradle.kts(应用/模块级) 替换 与 它编译并运行正常,但是您仍然可以看到以下错误。 val project.libs:librariesforlibs在此上下文中无法通过隐式接收器调用。如有必要,请使用显式 它看起来像是一个已知的错误here。要摆脱此错误,您可以添加 [更新 - 2023年1月2日]:如果您获得“ 期望表达式”构建错误,则要在文件末尾添加此 而不是硬编码 使用 libs.versions.toml file 示例1-单库 被 示例2-多个库 被 我认为版本目录的主要问题是,当库的新版本时,它不会提示您的消息。例如: 可用的 这里有一个第三方库,但我认为它仍然需要您手动运行gradle命令。 github存储库:Demo_CleanEmptyCompose(master_vercatalog branch) 转换为版本目录:diff 最初出版于https://vtsen.hashnode.dev 。
1.升级Gradle版本
./gradlew -version
./gradlew wrapper --gradle-version 7.4.2
.\wrapper\gradle-wrapper.jar
,.\wrapper\gradle-wrapper.properties
和.\build.gradle.kts
。
2.创建libs.versions.toml
.\gradle\libs.versions.toml
文件。请确保正确命名。我起初错误地命名了,我花了一段时间才弄清楚。libs.versions.toml
的示例看起来像这样。
[versions]
androidGradlePlugin = "7.3.0"
androidxCore = "1.8.0"
androidxComposeCompiler = "1.2.0"
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
[libraries]
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" }
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" }
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" }
[bundles]
androidx-lifeycle = ["androidx-lifecycle-runtime-ktx", "androidx-lifecycle-viewmodel-compose"]
[versions]
- [plugins]
和[libraries]
[plugins]
-用版本[libraries]
-用版本[bundles]
-将多个库组合到单个参考中
[bundles]
仅与库一起使用。它对插件不起作用。例如,以下内容不起作用。
[bundles]
android-gradle-plugin = ["android-application", "android-library"]
3.更新插件块
plugins {
id("com.android.application") version "7.2.2" apply false
id("com.android.library") version "7.2.2" apply false
id("org.jetbrains.kotlin.android") version "1.7.0" apply false
}
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
}
plugins {
id ("com.android.application")
id ("org.jetbrains.kotlin.android")
}
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
@Suppress("DSL_SCOPE_VIOLATION")
println("")
作为解决方法。
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
/*...*/
}
//Workaround for "Expecting an expression" build error
println("")
4.更新kotlincompilerextensionversion
kotlinCompilerExtensionVersion
composeOptions {
kotlinCompilerExtensionVersion = "1.2.0"
}
的[versions]
部分中定义androidxComposeCompiler
的libs.vesions.compose
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.androidxComposeCompiler.get()
}
5.更新库依赖关系
dependencies {
implementation("androidx.core:core-ktx:1.8.0")
}
取代
dependencies {
implementation(libs.androidx.core.ktx)
}
dependencies {
val lifeCycleVersion = "2.5.1"
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifeCycleVersion")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifeCycleVersion")
}
取代
dependencies {
implementation(libs.bundles.androidx.lifeycle)
}
目前的问题
androidx.core:core-ktx
的新版本可用:1.9.0
源代码