Android构建遇401未授权:无法解析Mapbox依赖com.mapbox.maps:android:10.17.0
修复React Native集成@rnmapbox/maps时Android构建401未授权问题
针对你遇到的无法解析Mapbox Maven依赖、返回401未授权的问题,按以下步骤逐一排查修复:
1. 确认Mapbox密钥的有效性
- 必须使用Secret Access Token(而非Public Token),在Mapbox控制台创建时务必勾选
Downloads:Read权限 - 检查密钥是否存在拼写错误、前后空格,或是否已过期/被吊销
2. 修正gradle.properties配置
- 将密钥放在项目根目录的
gradle.properties文件中,格式为:sk-key=你的Secret Access Token内容 - 不要给密钥加引号,确保文件路径正确(不是app模块下的gradle.properties)
3. 修复Gradle仓库配置结构
你的allprojects块被错误嵌套在buildscript内部,这会导致仓库配置不生效。调整根目录build.gradle的结构为:
buildscript { ext { buildToolsVersion = "34.0.0" minSdkVersion = 23 compileSdkVersion = 34 targetSdkVersion = 34 ndkVersion = "26.1.10909125" kotlinVersion = "1.9.22" RNMapboxMapsImpl = 'mapbox' } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") } } // allprojects与buildscript同级,不能嵌套 allprojects { repositories { // 保留其他仓库配置 maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' authentication { basic(BasicAuthentication) } credentials { username = 'mapbox' password = project.properties['sk-key'] ?: "" } } } }
4. 清理Gradle缓存
- 执行命令清理项目缓存:
# Mac/Linux ./gradlew clean # Windows gradlew clean - 手动删除项目根目录下的
.gradle/caches文件夹,以及用户目录(如~/.gradle/caches)下的Mapbox相关缓存
5. 验证密钥读取状态
在Gradle的credentials块中添加日志输出,确认密钥是否被正确加载:
credentials { username = 'mapbox' password = project.properties['sk-key'] ?: "" println "Mapbox密钥已加载: ${password != ''}" }
重新构建项目,查看控制台输出:如果显示true说明密钥读取正常,否则需检查gradle.properties的配置是否正确
6. 确认依赖版本兼容性
@rnmapbox/maps v10.1.24依赖的Mapbox Android SDK 10.17.0和turf库6.11.0是兼容的,无需调整版本,确保密钥拥有访问这些资源的权限即可
内容的提问来源于stack exchange,提问作者Ahmet OZER
相关产品推荐
相关产品推荐

