一、报错信息



编译 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.

【错误记录】Android 编译报错 ( Could not resolve xxx | 手动下载依赖库并进行本地配置 Gradle 依赖的解决方案 | 构建 Maven 依赖下载路径 )-LMLPHP





二、解决方案




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 地址拷贝到浏览器中 , 就可以下载该 依赖库 ;

下载完成后的文件如下 :

【错误记录】Android 编译报错 ( Could not resolve xxx | 手动下载依赖库并进行本地配置 Gradle 依赖的解决方案 | 构建 Maven 依赖下载路径 )-LMLPHP

建议使用 wget 或者 curl 命令行工具下载 ;


3、检查依赖库是否存在


通过上述 Maven 仓库依赖库地址拼接 , 就可以知道 该 依赖库是否在 Maven 仓库中存在 , 如果存在就可以下载 , 如果不存在 , 则下载失败 ;

到 Maven 仓库中 对应的地址 , 查找对应的依赖库 ;

如 : Maven 中央仓库 , 使用 mavenCentral() 配置 ;

allprojects {
    repositories {
        mavenCentral()
    }
}

对应的地址是 https://repo1.maven.org/maven2/ , 进入该页面后 , 显示的内容如下 :

【错误记录】Android 编译报错 ( Could not resolve xxx | 手动下载依赖库并进行本地配置 Gradle 依赖的解决方案 | 构建 Maven 依赖下载路径 )-LMLPHP
按照路径查找 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 依赖库 ;

【错误记录】Android 编译报错 ( Could not resolve xxx | 手动下载依赖库并进行本地配置 Gradle 依赖的解决方案 | 构建 Maven 依赖下载路径 )-LMLPHP


4、在 Gradle 中配置本地依赖


下载到本地后 , 将 下载的 依赖库拷贝到本地路径中 , 然后将相对路径配置到 dependencies / implementation 依赖中 ;

dependencies {  
    implementation files('path/to/your/downloaded/dependency.jar')  
}
04-14 10:50