关于AAPT2 error: check logs for details 的问题分析定位与排查解决方法

关于AAPT2 error: check logs for details 的问题分析定位与排查解决方法

现象描述

在android studio的项目开发过程中,经常会遇到关于AAPT2 error: check logs for details 这种类似的问题。一般都是jar包冲突导致的,尤其是support包,但是每次解决的时候,要么是误打误撞搞定,要么是懵里懵逼的解决。再次遇到时候依然是一脸茫然的不知所措。

现提供一种排查、定位及解决的方法,为再次遇到此类问题提供一些解决思路和办法。屁不多放,上正文:

1、排查

在这里插入图片描述
首先看studio的编译日志,如果能从编译日志中看出具体冲突的jar包,就可以根据具体jar包找对应的模块进行进一步的排查分析了。

很不幸,有些情况下我们从编译日志中看不出具体的问题。那我们就进行下一步:既然是jar包冲突,那肯定是依赖的多个版本。

直接去android studio左侧的project栏中的External Libraries找那些有多个版本的依赖包,如下图
在这里插入图片描述

2、定位

好的,第一步我们已经排查到了 有两个包是存在同时依赖了多个版本。但是,如果这两个包,我们在项目model中并没有找到多个版本呢?

那就可能是,我们项目中的依赖包内依赖了不同的版本。例如,modelA implementation 了一个第三方jar包,但是呢,这个第三方jar包内又implementation 了另一个版本的冲突包。

好的,那该怎么定位呢?向下看:
第一步:
androidstudio 有时会在build.gradle中直接爆红提示你:
在这里插入图片描述
直接提示你这俩包的版本冲突了。但是懵逼的你还会一脸懵逼!
第二步:
进入android studio的 File - Project Structure - Dependencies - All Modules,

注意:一定要等这个Fetching Gradle build models 消失后再继续下一步!

在这里插入图片描述
待Fetching Gradle build models 消失后,就能看到dependencies中会存在多个依赖的列表,点击列表,就能在最右侧的框框里看到这个依赖包是谁引入的。
在这里插入图片描述

注意:
像图中的recyclerview-v7虽然没有显示多个版本号,但是你有没有发现:它的最后面,竟然没有版本号!(其实这也是存在冲突的,但是不知道为什么android studio没有显示出来。)
support-annotations存在两个版本,肯定是有冲突的。

3、解决

通过第二步我们基本确认了冲突的jar包,那解决办法有多个:
(1)最简单的就是修改版本号,保持一致。
(2)但有时我们无法依赖包的版本号,可以采用exclude排除语句:

implementation('com.example:some-dependency:1.0.0') {
        exclude group: 'com.android.support', module: 'recyclerview'
        exclude group: 'com.android.support', module: 'support-annotations'
}

各位看官、各位码友,如果博客能够解决你们在工作、学习中遇到的问题,还请给小弟点个赞,收个藏。您的鼓励是我继续下去的动力!感谢各位衣食父母!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安静的码字猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值