Facebook Android SDK依赖解析失败求助(已尝试方案无效)
解决Facebook Android SDK依赖解析失败(403 Forbidden)问题
错误日志
* What went wrong: Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. > Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'. > Could not resolve com.facebook.android:facebook-android-sdk:latest.release. Required by: project :app > Skipped due to earlier error > Failed to list versions for com.facebook.android:facebook-android-sdk. > Unable to load Maven meta-data from https://api.mapbox.com/downloads/v2/releases/maven/com/facebook/android/facebook-android-sdk/maven-metadata.xml. > Could not get resource 'https://api.mapbox.com/downloads/v2/releases/maven/com/facebook/android/facebook-android-sdk/maven-metadata.xml'. > Could not GET 'https://api.mapbox.com/downloads/v2/releases/maven/com/facebook/android/facebook-android-sdk/maven-metadata.xml'. Received status code 403 from server: Forbidden > Could not resolve com.facebook.android:audience-network-sdk:6.11.0. Required by: project :app > com.google.ads.mediation:facebook:6.11.0.0 > Skipped due to earlier error > Could not resolve com.facebook.android:audience-network-sdk:6.11.0. > Could not get resource 'https://api.mapbox.com/downloads/v2/releases/maven/com/facebook/android/audience-network-sdk/6.11.0/audience-network-sdk-6.11.0.pom'. > Could not GET 'https://api.mapbox.com/downloads/v2/releases/maven/com/facebook/android/audience-network-sdk/6.11.0/audience-network-sdk-6.11.0.pom'. Received status code 403 from server: Forbidden
问题原因
Gradle错误地尝试从Mapbox私有Maven仓库下载Facebook SDK依赖,该仓库仅对Mapbox相关包开放访问,因此返回403 Forbidden。这通常是仓库配置顺序不当,或未对Mapbox仓库做内容过滤导致的。
解决方案
方案1:调整仓库优先级(最直接)
打开项目根目录下的android/build.gradle,修改allprojects中的仓库顺序,确保公共仓库(google()、mavenCentral())排在Mapbox仓库之前,让Gradle优先从公共仓库获取Facebook依赖:
allprojects { repositories { google() mavenCentral() mavenLocal() maven { // Android JSC相关依赖仓库 url("$rootDir/../node_modules/jsc-android/dist") } jcenter() // 可选,jcenter已停止维护,建议后续逐步移除 maven { url 'https://www.jitpack.io' } // 如果项目需要Mapbox仓库,放在最后 maven { url "https://api.mapbox.com/downloads/v2/releases/maven" } } }
方案2:给Mapbox仓库添加内容过滤(更严谨)
如果项目必须保留Mapbox仓库,可通过内容过滤限制该仓库仅处理Mapbox相关依赖,避免干扰其他包的解析:
allprojects { repositories { google() mavenCentral() mavenLocal() maven { url("$rootDir/../node_modules/jsc-android/dist") } maven { url "https://api.mapbox.com/downloads/v2/releases/maven" // 仅允许从该仓库获取Mapbox相关组的依赖 content { includeGroup "com.mapbox" includeGroup "com.mapbox.mapboxsdk" includeGroup "com.mapbox.android" } } jcenter() maven { url 'https://www.jitpack.io' } } }
方案3:避免使用latest.release,指定具体版本
latest.release会让Gradle频繁请求仓库拉取版本元数据,建议替换为Facebook SDK的稳定具体版本,比如:
打开app/build.gradle,修改依赖声明:
// 替换为当前稳定版本,示例为16.2.0,可根据官方文档选择最新稳定版 implementation 'com.facebook.android:facebook-android-sdk:16.2.0' // 如果仅需要登录功能,可单独引入 // implementation 'com.facebook.android:facebook-login:16.2.0'
最后:清理Gradle缓存
修改配置后,执行以下操作确保缓存更新:
- 终端执行命令:
./gradlew clean build --refresh-dependencies - 或在Android Studio中点击
File > Invalidate Caches... > Invalidate and Restart
内容的提问来源于stack exchange,提问作者Developer Software
相关产品推荐
相关产品推荐

