使用osmdroid 6.1.13的Kotlin Android项目编译失败求助
问题分析与解决方案
异常字符来源
从错误的依赖下载URL(osmdroid-android'%20))可以直接判断:你的依赖声明中混入了多余的单引号、空格和右括号。这些无效字符被Gradle误解析为依赖坐标的一部分,经过URL编码后就变成了%20(对应空格)和%29(对应右括号),导致无法匹配到正确的远程依赖包。
虽然你贴出的依赖格式看似正确,但实际项目的build.gradle(或build.gradle.kts)文件中,某一行osmdroid依赖肯定存在拼写错误,比如:
- 多打了右括号:
implementation 'org.osmdroid:osmdroid-android:6.1.13') - 多余的单引号:
implementation 'org.osmdroid:osmdroid-android:6.1.13'' - 依赖坐标前后混入了空格或其他符号
解决步骤
检查并修正依赖声明
打开app模块的build.gradle(或build.gradle.kts)文件,逐行核对所有osmdroid依赖,确保格式完全合规,正确示例:implementation 'org.osmdroid:osmdroid-android:6.1.13' implementation 'org.osmdroid:osmdroid-wms:6.1.13' implementation 'org.osmdroid:osmdroid-mapsforge:6.1.13' implementation 'org.osmdroid:osmdroid-geopackage:6.1.13'重点排查是否有多余的引号、括号、空格或其他特殊符号。
清理Gradle缓存并刷新依赖
在项目根目录执行以下命令,强制清理缓存并重新拉取正确的依赖:./gradlew clean build --refresh-dependencies确认仓库配置正确
检查项目根目录的settings.gradle文件,确保已配置必要的Maven仓库(osmdroid包托管在Maven Central):dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } }
内容的提问来源于stack exchange,提问作者Martin Bammer
相关产品推荐
相关产品推荐

