升级Gradle 4.4后出现Failed to resolve: leakcanary-android构建错误
Failed to resolve: leakcanary-android的问题 我之前也碰到过一模一样的问题!Gradle 4.4搭配Android Studio 3.1的时候,LeakCanary的依赖确实容易出解析失败的状况,给你几个亲测有效的解决步骤:
1. 先确认依赖声明是否正确
AS 3.1和Gradle 4.4已经推荐用implementation/debugImplementation这类新的依赖配置了,而且LeakCanary的最新稳定版依赖写法也有更新,你可以把app模块的build.gradle里的依赖改成这样:
dependencies { // 仅在debug包中启用LeakCanary debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' // release包用无操作版本,避免影响正式包 releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:2.7' // 测试环境也用无操作版本 testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:2.7' }
注意:如果还在用旧的compile关键字,Gradle 4.4虽然兼容,但更建议换成上面的新配置,避免潜在的冲突。
2. 检查根目录build.gradle的仓库配置
LeakCanary的托管仓库是JCenter或者Maven Central,你得确保根目录的build.gradle里包含了这些仓库,不然Gradle找不到依赖:
allprojects { repositories { google() // AS 3.1需要这个仓库来获取Android相关依赖 jcenter() mavenCentral() // 部分LeakCanary版本可能需要这个仓库 } }
我当时就是漏掉了mavenCentral(),加上之后依赖就正常解析了。
3. 清理缓存并重新同步
有时候Android Studio的缓存会抽风,导致依赖解析异常,你可以:
- 点击工具栏上的Sync Project with Gradle Files按钮(那个带箭头的刷新图标)
- 执行
File > Invalidate Caches / Restart,选择Invalidate and Restart,重启AS并清理缓存
4. 确认Gradle插件和Gradle版本的兼容性
AS 3.1对应的Gradle插件版本应该在3.1.0到3.1.4之间,这个版本和Gradle 4.4是兼容的,你可以检查根目录build.gradle里的插件配置:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.4' // 这个版本和Gradle4.4完美适配 } }
5. 排查网络/代理问题
如果你的网络需要代理,一定要确保AS的代理配置正确(File > Settings > Appearance & Behavior > System Settings > HTTP Proxy),或者切换到稳定的网络环境——依赖解析失败很多时候都是网络不通导致仓库访问不了。
按照这些步骤逐一排查,应该就能解决你的问题了!
内容的提问来源于stack exchange,提问作者Xi Wei

