编译Android示例项目遇Gradle依赖问题:找不到com.android.support:appcompat-v7:27.+
解决Gradle无法找到com.android.support:appcompat-v7:27.+的问题
从你给出的报错信息来看,核心问题是Gradle没有正确访问Google Maven仓库,只在本地仓库和项目内的sdk-manager目录里搜索依赖,导致找不到27.x版本的appcompat-v7。下面是针对性的解决方案:
1. 修正仓库配置的位置与顺序
首先要确保google()(或完整的Google Maven仓库地址)配置在项目根目录的build.gradle中,并且放在本地仓库之前——Gradle会按配置顺序搜索仓库,前面的仓库找不到依赖时才会去后面的仓库查找。
修改根目录的build.gradle文件如下:
buildscript { repositories { // 优先搜索Google仓库 google() // 兼容旧版Gradle的写法:maven { url 'https://maven.google.com' } jcenter() } dependencies { // 注意:Gradle 4.4.1对应的Android Gradle Plugin版本是3.1.x,这里以3.1.4为例 classpath 'com.android.tools.build:gradle:3.1.4' } } allprojects { repositories { google() // 同上,兼容写法:maven { url 'https://maven.google.com' } jcenter() // 本地仓库放在最后,让Gradle先尝试远程仓库 maven { url 'file://D:/android-sdk/extras/android/m2repository' } // 如果项目内的sdk-manager不是必须依赖源,可以考虑注释掉 // maven { url 'file:/C:/Users/xxx/IdeaProjects/MyApplication/sdk-manager' } } }
2. 无需完全禁用本地仓库(调整顺序即可)
你不需要彻底禁用本地仓库,只要把远程仓库(Google、jcenter)放在配置顺序的前面,Gradle就会优先从远程拉取最新的依赖包。如果确实想禁用本地仓库,直接删除根build.gradle中对应的maven { url 'file://...' }配置即可,但不建议这么做——本地仓库可能存储着一些自定义或离线依赖。
3. 强制Gradle刷新依赖缓存
执行以下命令清理旧缓存并重新同步项目,确保Gradle重新拉取依赖:
# Windows系统执行 gradlew clean build --refresh-dependencies # macOS/Linux系统执行 ./gradlew clean build --refresh-dependencies
为什么之前添加google()无效?
从你的报错日志能看出,Gradle只搜索了本地仓库和项目内的sdk-manager,说明:
- 你可能把
google()配置在了模块级的build.gradle中(而非根目录),导致全局依赖搜索不生效; - 仓库顺序配置错误,本地仓库排在了Google仓库前面,Gradle搜完本地没找到依赖就直接报错了。
内容的提问来源于stack exchange,提问作者user6056556
相关产品推荐
相关产品推荐

