Я пытаюсь использовать каталог версий с Android-Studio Iguana 2023.2.1 Patch 2. Когда я пытаюсь синхронизировать Gradle, я получаю эту ошибку:
Invalid catalog definition:
- Problem: In version catalog libs, you can only call the 'from' method a single time.
Но я использую его только один раз, по крайней мере, насколько я понимаю.
Это мой файл settings.gradle.file
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
versionCatalogs {
libs {
from(files("gradle/libs.versions.toml"))
}
}
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Emvoliasmoi"
include ':app', ':jsch-0.1.55', ':scan'
и это моя libs.version:
[versions]
kotlin = "1.9.24"
realm = "1.16.0"
androidApplication = "7.3.0"
appCompat = "1.1.0"
constraintLayout = "2.1.4"
lifecycle = "2.3.1"
material = "1.11.0"
retrofit = "2.9.0"
gson = "2.8.6"
work = "2.3.4"
[libraries]
appCompat = "androidx.appcompat:appcompat:$appCompat"
constraintLayout = "androidx.constraintlayout:constraintlayout:$constraintLayout"
lifecycleViewmodel = "androidx.lifecycle:lifecycle-viewmodel:$lifecycle"
lifecycleLivedata = "androidx.lifecycle:lifecycle-livedata:$lifecycle"
lifecycleCommonJava8 = "androidx.lifecycle:lifecycle-common-java8:$lifecycle"
material = "com.google.android.material:material:$material"
retrofit = "com.squareup.retrofit2:retrofit:$retrofit"
converter-gson = "com.squareup.retrofit2:converter-gson:$retrofit"
workRuntime = "androidx.work:work-runtime:$work"
[plugins]
androidApplication = { id = "com.android.application", version.ref = "androidApplication" }
kotlinAndroid = {id = "org.jetbrains.kotlin.android", version.ref = "kotlin"}
realm = {id = "id.realm.kotlin", version.ref = "realm"}
Путь «gradle/libs.versions.toml» правильный относительно файла settings.gradle.
«От» используется только один раз. Кто-нибудь знает, что здесь не так?
@Джей, ты прав. Я устранил ошибку. Опубликуйте это как ответ, чтобы я мог принять его как правильный ответ.
Нет необходимости специально объявлять значение libs.versions.toml по умолчанию в versionCatalogs, поскольку оно будет выбрано сборкой gradle из подкаталога gradle, как указано в документации :
Gradle предлагает обычный файл для объявления каталога. Если файл
libs.versions.tomlнайден в подкаталогеgradleкорневой сборки, то автоматически будет объявлен каталог с содержимым этого файла.
прокомментируйте эту часть кода
// versionCatalogs {
// libs {
// from(files("gradle/libs.versions.toml"))
// }
// }
libs используется в качестве каталога версий по умолчанию. Нет необходимости настраивать. если вы хотите добавить новый каталог, вы можете сделать это следующим образом:
versionCatalogs {
androidx {
from(files("gradle/libs.androidx.toml"))
}
}
Почему вы должны объявить этот
libs.versions.tomlфайл каталогом версий? Согласно документации :Gradle offers a conventional file to declare a catalog. If a libs.versions.toml file is found in the gradle subdirectory of the root build, then a catalog will be automatically declared with the contents of this file.