一、报错信息
编译 Android Studio 项目时 , 报如下错误 , 下载依赖库失败 ;
报错信息 :
Execution failed for task ':ijkplayer-exo:generateDebugRFile'.
> Could not resolve all files for configuration ':ijkplayer-exo:debugCompileClasspath'.
> Could not resolve com.google.android.exoplayer:exoplayer:r1.5.11.
Required by:
project :ijkplayer-exo
> Could not resolve com.google.android.exoplayer:exoplayer:r1.5.11.
> Could not get resource 'https://raw.githubusercontent.com/Pgyer/analytics/master/com/google/android/exoplayer/exoplayer/r1.5.11/exoplayer-r1.5.11.pom'.
> Could not HEAD 'https://raw.githubusercontent.com/Pgyer/analytics/master/com/google/android/exoplayer/exoplayer/r1.5.11/exoplayer-r1.5.11.pom'.
> raw.githubusercontent.com
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
二、解决方案
1、确定 Maven 仓库地址
下面是 当前 Android 项目的 Gradle 配置中的 Maven 仓库 ;
allprojects {
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
// ijkplayer 仓库
maven { url "https://repo.spring.io/plugins-release/" }
maven { url "https://repository.mulesoft.org/nexus/content/repositories/public/" }
maven { url "https://dl.bintray.com/bilibili/maven/" }
}
}
其中使用 maven { url "https://repo.spring.io/plugins-release/" }
配置的 Maven 仓库就是对应的地址 ;
使用 google()
函数配置的 Maven 仓库地址 是 https://maven.google.com/ , 可以通过 https://maven.google.com/web/index.html 地址搜索对应的 依赖库 ;
使用 mavenCentral()
函数配置的 Maven 仓库地址是 https://repo1.maven.org/ ;
使用 jcenter()
函数配置的 Maven 仓库地址是 http://jcenter.bintray.com , 目前已经无法访问 , 其依赖库都迁移到了 Maven 中央仓库 ;
2、构建 Maven 依赖下载路径
以 下载 org.springframework.boot:spring-boot-starter-web:2.5.0 为例 ,
- 组织ID 是 org.springframework.boot , 其对应的路径是 org/springframework/boot/ ;
- 构件ID 是 spring-boot-starter-web ;
- 版本号 是 2.5.0 ;
下载路径公式是 : 仓库地址/组织ID/构件ID/版本号/构件ID-版本号.jar ;
仓库地址是 https://repo1.maven.org/maven2/ 地址 ;
按照上面的公式拼接起来就是 https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-web/2.5.0/spring-boot-starter-web-2.5.0.jar ;
将拼接的 https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-web/2.5.0/spring-boot-starter-web-2.5.0.jar 地址拷贝到浏览器中 , 就可以下载该 依赖库 ;
下载完成后的文件如下 :
建议使用 wget 或者 curl 命令行工具下载 ;
3、检查依赖库是否存在
通过上述 Maven 仓库依赖库地址拼接 , 就可以知道 该 依赖库是否在 Maven 仓库中存在 , 如果存在就可以下载 , 如果不存在 , 则下载失败 ;
到 Maven 仓库中 对应的地址 , 查找对应的依赖库 ;
如 : Maven 中央仓库 , 使用 mavenCentral()
配置 ;
allprojects {
repositories {
mavenCentral()
}
}
对应的地址是 https://repo1.maven.org/maven2/ , 进入该页面后 , 显示的内容如下 :
按照路径查找 com.google.android.exoplayer:exoplayer:r1.5.11 依赖库 ;
找到 https://repo1.maven.org/maven2/com/google/android/ 层级 , 就没有对应的依赖库了 , 说明在 Maven 中央仓库 https://repo1.maven.org/maven2/ 中没有 com.google.android.exoplayer:exoplayer 依赖库 ;
4、在 Gradle 中配置本地依赖
下载到本地后 , 将 下载的 依赖库拷贝到本地路径中 , 然后将相对路径配置到 dependencies / implementation 依赖中 ;
dependencies {
implementation files('path/to/your/downloaded/dependency.jar')
}