Android 导入开发库transformDexArchiveWithExternalLibsDexMergerForDebug问题分析和解决

问题描述

最近在集成一个第三方的视频监控模块的时候遇到了一个很神奇的问题,如题,项目构建没问题,但是应用安装的时候一直出这个问题。一看就是开发库重复的问题。
这里写图片描述

解决思路

1.初级思路,这种问题我见过,把所有项目的gradle找一遍删除掉重用的开发库,compile尽量改成implementation,这样可以让模块的引用在打包的时候不打包到apk中
这里写图片描述

对了一遍,该改的改 ,该删的删问题还是没解决。

这里写图片描述

2.在依赖库里面一个一个对照,发现不到问题。
还是没解决问题。

3.连个log都没有,这问题怎么定位。后面在命令行 gradle installdebug 打包了一下,还是没打包成功,但发现可以打印堆栈。
这里写图片描述

重新用 gradle installdebug –stacktrace把堆栈日志打出来
发现有个类文件重复了。查看了这个类文件,还真的有两个。
这里写图片描述
好小子居然在jar包里面,怪不得找半天没找到。
因为是Gson库,后面直接打开这个jar包删除掉这个gson文件夹,解决问题。

1.顺便解决一下疑问,就是jar包删除了某个文件夹肯定会导致jar包不可用。但是还好重复的是Gson,因为在编译的时候还是会把主项目的Gson编译到apk中,所以不用担心jar包的引用问题。如果重复的是其他的项目,并且版本不一致的话,那可能要舍弃些什么了。

2.因为是jar包所以不好定位,如果是其他的模块完全可以用implementation,或者exclude来移除相应的依赖。

反思

这边建议遇到打包问题的时候通过gradle 命令行来打印打包日志信息。这样能更好的定位很多错误。大多数问题其实可以看日志解决,多掌握一些debug的手段。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值