Android Kotlin DSL Gradle无法从自定义仓库解析依赖求助
问题描述
我正在将项目的build.gradle文件转换为build.gradle.kts,已经完成核心工作并创建libs.versions.toml文件统一管理依赖,但遇到4个自定义Maven仓库依赖无法解析的问题。
相关配置信息
项目中的依赖引用(build.gradle.kts)
//Dependency Injection implementation(libs.hilt.android) kapt(libs.hilt.android) kapt(libs.androidx.hilt.compiler) annotationProcessor(libs.hilt.compiler) //View implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) implementation(libs.customtoast) implementation(libs.picasso.transformations) implementation(libs.picasso) implementation(libs.qrgen) implementation(libs.accessibility.tools) // <-- 无法解析 implementation(libs.apachecommons.text) implementation(libs.custom.progressindicator) // <-- 无法解析 implementation(libs.decocharting) implementation(libs.avilibrary) // <-- 无法解析 //Coroutines implementation(libs.coroutines.android) implementation(libs.coroutines.core) //LiveData implementation(libs.livedata.ktx) kapt(libs.livedata.lifecycle.compiler) implementation(libs.livedata.lifecycle.extensions) // ViewModel implementation(libs.viewmodel.ktx) implementation(libs.viewmodel.compose) implementation(libs.viewmodel.savedstate) implementation(libs.viewmodel.lifecycleruntime.ktx) //Networking implementation(libs.retrofit) implementation(libs.retrofit.gson.converter) implementation(libs.okhttp.logging.interceptor) implementation(project(":devenvironmentswitcher")) implementation(libs.okhttp) implementation(libs.gson) implementation(libs.gson.extras) implementation(libs.loopj.async) //UI - Compose implementation(libs.compose.ui) implementation(libs.compose.ui.preview) implementation(libs.compose.ui.material) implementation(libs.material) //Database implementation(libs.room.runtime) implementation(libs.room.ktx) kapt(libs.room.compiler.kapt) //Analytics implementation(platform(libs.firebase.bom)) implementation(libs.firebase.crashlytics) implementation(libs.firebase.analytics) implementation(libs.firebase.performance) //Androidx implementation(libs.androidx.recyclerview) implementation(libs.androidx.cardview) implementation(libs.androidx.v4legacysupport) implementation(libs.androidx.browser) implementation(libs.androidx.exif) implementation(libs.androidx.multidex) implementation(libs.androidx.appcompat) //Messaging implementation(libs.firebase.messaging) implementation(libs.firebase.core) implementation(libs.azure.notification.handler) // <-- 无法解析 implementation(libs.azure.notification.hub) //Play Services implementation(libs.playservices.auth) implementation(libs.playservices.gcm) implementation(libs.playservices.location) implementation(libs.playservices.maps) implementation(libs.playservices.vision) implementation(libs.playservices.licenses) //Encryption implementation(libs.spongy.castle) implementation(libs.scotty.aes.crypt) //Testing testImplementation(libs.test.junit) testImplementation(libs.test.hilt.testing) testImplementation(libs.test.coroutines.test) testImplementation(libs.test.mockk) kaptTest(libs.test.hilt.compiler.testing) androidTestImplementation(libs.test.junit.androidx) androidTestImplementation(libs.test.rules) androidTestImplementation(libs.test.junit.ktx) androidTestImplementation(libs.test.espresso.core) implementation(libs.test.arch.testing) //Misc implementation(libs.scotty.rootbeer) implementation(libs.joda) implementation(libs.device.names) implementation(libs.iocard)
libs.versions.toml中无法解析的依赖配置
custom-progressindicator = { group = "com.kaopiz", name = "kprogresshud", version.ref = "progress_hud_version"} avilibrary = { group = "com.wang.avi", name = "library", version.ref = "wang_avi_version"} azure-notification-handler = { group = "com.microsoft.azure", name = "azure-notifications-handler", version.ref = "microsoft_notification_handler_version"} accessibility-tools = { group = "com.novoda", name = "accessibilitools", version.ref = "novoda_accessibility_version"}
settings.gradle.kts中的仓库配置
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven (url = "https://jitpack.io") maven (url = "https://dl.bintray.com/microsoftazuremobile/SDK") maven (url = "https://dl.bintray.com/81813780/maven") } }
错误输出(运行androidDependencies任务)
> Could not find com.novoda:accessibilitools:1.6.0. Required by: project :app > Could not find com.kaopiz:kprogresshud:1.2.0. Required by: project :app > Could not find com.wang.avi:library:2.1.3. Required by: project :app > Could not find com.microsoft.azure:azure-notifications-handler:3.5.1. Required by: project :app
这些自定义仓库在旧的build.gradle中可以正常工作,现在转成KTS版本后失效,请问问题出在哪里?
解决建议
1. 核心问题:Bintray仓库已停止服务
你配置的两个dl.bintray.com仓库早在2021年就已关闭,这是依赖无法解析的主要原因:
https://dl.bintray.com/microsoftazuremobile/SDK:微软Azure的旧仓库已迁移https://dl.bintray.com/81813780/maven:第三方个人仓库已失效
2. 针对每个依赖的修复方案
- com.novoda:accessibilitools:1.6.0:该依赖已同步到Maven Central,无需额外仓库,确保
mavenCentral()在仓库列表中即可 - com.kaopiz:kprogresshud:1.2.0:改用Jitpack仓库,确认
https://jitpack.io已配置,同时修正toml配置为:custom-progressindicator = { group = "com.github.kaopiz", name = "kprogresshud", version = "1.2.0"} - com.wang.avi:library:2.1.3:同样迁移到了Jitpack,修正toml配置为:
avilibrary = { group = "com.github.wangjiegulu", name = "AVLoadingIndicatorView", version = "2.1.3"} - com.microsoft.azure:azure-notifications-handler:3.5.1:微软已将该依赖迁移到Maven Central,直接移除对应的Bintray仓库即可,同时确认版本号是否正确
3. 其他检查项
- 确认
libs.versions.toml中version.ref对应的版本号和旧build.gradle完全一致,无拼写错误 - 执行
./gradlew clean build --refresh-dependencies强制刷新依赖缓存,避免旧缓存干扰
内容的提问来源于stack exchange,提问作者DJ-DOO
相关产品推荐
相关产品推荐

