升级Gradle至4.1后Android项目崩溃,mergeDebugResources任务失败求助
兄弟,太懂你这种升级后项目突然崩掉的崩溃感了!之前好好的项目,升级Gradle到4.1就触发mergeDebugResources报错,大概率是资源相关的问题,咱们一步步排查解决:
先揪出报错指向的资源文件
报错里提到了C:\Users\daviestobialex\AndroidStudioProjects\ShopCentra\app\src\main\res\drawable\trape...这个文件,先把它找出来排查:- 检查文件名:是不是用了中文、特殊字符(除了下划线、连字符)或者过长?Gradle 4.1对资源命名的校验比之前更严格
- 检查文件内容:如果是xml格式的shape/vector图,看看有没有标签未闭合、属性写错这类语法错误;如果是图片文件,用图片浏览器打开确认有没有损坏
清理Gradle缓存和项目构建缓存
升级Gradle后缓存很容易出问题,手动清一波绝对有用:- 点击Android Studio顶部菜单栏的
File->Invalidate Caches...,勾选Invalidate and Restart,重启AS - 手动删除本地Gradle缓存文件夹:Windows路径一般是
C:\Users\<你的用户名>\.gradle\caches,删掉里面所有内容就行,后续会重新生成 - 打开AS底部的Terminal,执行清理命令:
# Windows系统用这个 gradlew clean build --refresh-dependencies # Mac/Linux系统用这个 ./gradlew clean build --refresh-dependencies
- 点击Android Studio顶部菜单栏的
排查重复资源
看看是不是同一个资源在不同res目录(比如drawable和drawable-v24)或者不同module里重复了,搜一下整个项目里有没有和trape...同名的资源,把重复的删掉或者重命名校验Gradle插件与Gradle版本的兼容性
Gradle 4.1对应的Android Gradle插件(AGP)版本范围是3.0.0~3.1.4,你可以打开项目根目录的build.gradle文件,检查AGP版本是否匹配:dependencies { classpath 'com.android.tools.build:gradle:3.1.4' // 这个版本和Gradle 4.1完全兼容 }如果之前的AGP版本太低或太高,调整到兼容版本试试
检查资源目录结构规范
看看res目录下有没有不符合规范的文件夹,比如把drawable文件放到了mipmap目录,或者自定义了不标准的资源目录名称,Gradle 4.1对目录结构的校验更严格了
如果以上方法都没能解决问题,你可以把报错的完整信息(比如trape...文件的全名、完整错误栈)贴出来,咱们再精准定位问题!
内容的提问来源于stack exchange,提问作者DaviesTobi alex

