Android Studio集成MapBox SDK依赖解析失败问题求助
依赖解析失败原因
核心问题是你使用的Android Gradle Plugin 7.1.0版本默认通过settings.gradle中的dependencyResolutionManagement统一管理所有模块的依赖仓库,你把MapBox的私有Maven源配置在了项目级build.gradle的allprojects块下,Gradle解析依赖时根本不会读取这个配置,自然找不到私有源托管的MapBox SDK。
另外你当前配置还有两个隐性问题:
- MapBox仓库配置写法不规范,将repositories块赋值给变量再调用的写法在新版Gradle中不会正常生效
- 未确认
MAPBOX_DOWNLOADS_TOKEN的权限,使用公开令牌或者未配置下载权限的令牌也会导致拉取被403拒绝,表现为依赖找不到
修复步骤
- 重写
settings.gradle,将所有依赖仓库统一迁移到dependencyResolutionManagement块中,删除项目级build.gradle里allprojects下的所有仓库配置
修改后的settings.gradle参考如下:
- 重写
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://esri.jfrog.io/artifactory/arcgis' } maven { url 'https://olympus.esri.com/artifactory/arcgisruntime-repo/' } maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' authentication { basic(BasicAuthentication) } credentials { username = "mapbox" password = MAPBOX_DOWNLOADS_TOKEN } } } } rootProject.name = "proect1" include ':app'
- 核对令牌配置:打开根目录下的
gradle.properties文件,确认存在MAPBOX_DOWNLOADS_TOKEN=你的MapBox私有令牌配置,该令牌需要在MapBox账号后台创建,必须勾选DOWNLOADS:READ权限,禁止使用前端公开令牌,公开令牌无依赖下载权限。
- 核对令牌配置:打开根目录下的
- 清理冗余依赖:打开模块级build.gradle,删除重复引入的依赖项,包括重复的
androidx.appcompat:appcompat、com.google.android.material:material、androidx.multidex:multidex、com.google.gms:google-services,避免版本冲突导致的解析异常。
- 清理冗余依赖:打开模块级build.gradle,删除重复引入的依赖项,包括重复的
- 清缓存重同步:在Android Studio中依次点击
File -> Invalidate Caches...,勾选清除缓存选项后重启IDE,重启后在终端执行./gradlew clean,再重新执行Gradle同步即可。
- 清缓存重同步:在Android Studio中依次点击
额外说明
不要混用v10版本和9.x及以下旧版MapBox SDK的配置逻辑:v10版本依赖坐标是com.mapbox.maps:android,托管在v2版本的私有Maven源上;旧版SDK依赖坐标是com.mapbox.mapboxsdk:mapbox-android-sdk,托管地址完全不同,混配必然出现依赖错误。
如果同步时仍然提示连接失败,检查本地网络是否可以正常访问MapBox官方Maven地址,该私有源无国内镜像,网络受限会直接导致依赖拉取失败。
内容的提问来源于stack exchange,提问作者Fortem
相关产品推荐
相关产品推荐

