Expo React Native集成@rnmapbox/maps时遇401依赖解析错误求助
问题现象
构建时抛出如下错误:
FAILURE: Build failed with an exception. - 问题原因: 无法确定任务':app:processDebugResources'的依赖项。 > 无法解析':app:debugRuntimeClasspath'配置的所有依赖项。 > 无法解析com.mapbox.maps:android:11.0.0。 > 被以下项目依赖:project :app > project :rnmapbox_maps >> 无法解析com.mapbox.maps:android:11.0.0。 >> 无法获取资源'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/maps/android/11.0.0/android-11.0.0.pom'。 >> 无法GET该资源,服务器返回状态码401: Unauthorized > 无法解析com.mapbox.mapboxsdk:mapbox-sdk-turf:6.11.0。 > 被以下项目依赖:project :app > project :rnmapbox_maps >> 无法解析com.mapbox.mapboxsdk:mapbox-sdk-turf:6.11.0。 >> 无法获取资源'https://api.mapbox.com/downloads/v2/releases/maven/com/mapbox/mapboxsdk/mapbox-sdk-turf/6.11.0/mapbox-sdk-turf-6.11.0.pom'。 >> 无法GET该资源,服务器返回状态码401: Unauthorized - 建议尝试: > 使用--stacktrace选项获取堆栈跟踪。 > 使用--info或--debug选项获取更多日志输出。 > 使用--scan选项获取完整分析信息。 > 访问https://help.gradle.org获取更多帮助。
核心原因
Mapbox的私有Maven仓库需要携带带DOWNLOADS:READ权限的Mapbox访问令牌才能拉取依赖,当前项目未正确配置授权凭证,导致请求返回401未授权错误。
解决步骤
1. 获取合规的Mapbox访问令牌
登录Mapbox平台,创建并获取一个包含DOWNLOADS:READ权限的访问令牌(该权限是拉取依赖的必要条件)。
2. 配置Gradle凭证(Bare/自定义开发客户端项目)
在项目的android/build.gradle文件中,添加Mapbox仓库的授权配置:
allprojects { repositories { // 保留原有仓库配置 maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' authentication { basic(BasicAuthentication) } credentials { username = 'mapbox' password = '你的Mapbox访问令牌' } } } }
3. 用环境变量避免硬编码令牌(推荐)
不要直接将令牌写入代码,通过环境变量传递更安全:
- 项目根目录创建
.env文件:MAPBOX_DOWNLOAD_TOKEN=你的Mapbox访问令牌 - 修改
android/build.gradle读取环境变量:allprojects { repositories { // 保留原有仓库配置 maven { url 'https://api.mapbox.com/downloads/v2/releases/maven' authentication { basic(BasicAuthentication) } credentials { username = 'mapbox' password = System.getenv("MAPBOX_DOWNLOAD_TOKEN") } } } }
4. Managed Workflow 额外配置
如果是Expo Managed Workflow,需借助expo-build-properties插件注入配置:
- 安装插件:
npx expo install expo-build-properties - 修改
app.json/app.config.js:{ "expo": { "plugins": [ [ "expo-build-properties", { "android": { "extraGradleProperties": { "MAPBOX_DOWNLOAD_TOKEN": "你的Mapbox访问令牌" } } } ] ] } } - 确保
android/build.gradle中已配置读取该环境变量(参考步骤3)。
5. 清理缓存后重新构建
执行以下命令清理缓存并重新构建:
cd android && ./gradlew clean cd .. && npx expo run:android
内容的提问来源于stack exchange,提问作者Godwin Namweli
相关产品推荐
相关产品推荐

