Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol

老套路,先晒图

图一:

如题,在编译打包时遇到了如上错误,很明显这是一个依赖库冲突的问题,我的app下依赖一个 ad library,而 ad library有依赖了一个 http library,这是一个我用okhttp封装的网络请求库,而 ad library 又依赖了 compile 'com.squareup.okhttp3:okhttp:3.9.1' 这依赖关系确实有点混乱,那这时候有人说了,你的 ad library为什么不用 http library里面的okhttp呢?自从AS3.0 gradle4.0开始依赖使用 implementation 代替了 compile 关键字,因此 compile 就被过期了,http 虽然依赖了 okhttp ,但是 ad library要想使用 okhttp 是不可以的,因为使用implementation 对于ad library 是不可见的,所以ad library又依赖了一次 compile 'com.squareup.okhttp3:okhttp:3.9.1' 因为 ad library需要单独的进行定制化的网络请求配置,所以 ad library中的网络请求是没有封装进http library中的,所以导致了重复依赖的问题,使用 implementation 关键字虽然可以屏蔽ad library访问 http library中 okhttp 的api,但是依赖冲突的问题确实还是存在的...

于是乎,网上搜了一篇帖子:

https://stackoverflow.com/questions/45111497/android-gradle-failed-multiple-dex-files-define-okhttp

看来一下和我的情况一毛一样,报的错误也一样,直接戳到Answer处,解决方式如下

图二:

然后直接去除掉重复的依赖,修改如下后,再rebuild

图三:

心里想着,这个问题终于解决了,喝了口水,长呼了一口气。。。

我擦,竟然又爆红了,我勒个去,什么情况?这不科学啊,什么鬼?心里很郁闷,这是为什么呢?

不行啊,看来我必须要放大招了,心里开始仔细揣摩了,认真想想,绝逼哪里肯定是有问题的,start thinking...

认真起来的男人是最帅的 0.0~

仔细看了看http library中的 okhttp 是3.3.1,而 ad library中的 okhttp 3.9.1,忽然想起来之前遇到过同时依赖两个不同版本的库也会出现这样的问题,于是,灵光一现,立马把版本号改一样试试,修改后如下:

图四:

然后再rebuild...

oh yeah ~ 搞定,就是这么6... 怎一个爽快了得?

好了,今天就分享这么多吧,一来呢总结一下自己遇到的一些问题及解决办法,如果你也遇到,希望能帮助到你们,二来呢,希望大家如果真的帮助到你们了,麻烦你们给我点个赞或者在文章底部给我评论,或者你有什么意见或者意见都可以相互交流,谢谢你们!

--------一个逗比的码农和一个逗比的故事,如果想看到更多的文章,请点左侧头像下面的关注!

Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol的更多相关文章

  1. Multiple dex files define Lcom/google/gson/internal/Streams$AppendableWriter$CurrentWrite;

    开发中引入第三方 aar 时编译同过,运行时出现问题: Multiple dex files define Lcom/google/gson/internal/Streams$AppendableWr ...

  2. Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...

    Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...

  3. Multiple dex files define Lcom/google/zxing/BarcodeFormat

    解决zxing “Could not find class 'com.goole.zxing.Result”和“Multiple dex files define”问题 时间 2014-04-24 1 ...

  4. 用Eclipse运行Android版APP(PhoneGap)时出现:Unable to execute dex: Multiple dex files define

    这两天遇到点小问题,做个记录: 症状:运行,调试时都报:Unable to execute dex: Multiple dex files define错误,发布后的APP安装到手机后一运行,就提示: ...

  5. Unable to execute dex: Multiple dex files define Lcom/gl

    [2015-04-16 17:42:04 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/gl/softphon ...

  6. Multiple dex files define

    Multiple dex files define 在项目中,有一个类的包名和引用的jar包中的类和包名一致

  7. Unable to execute dex: Multiple dex files define 解决方法

    程序编译正常,在用Eclipse调试执行时,报错Unable to execute dex: Multiple dex files define: 方法:      原因是有重复的.jar被引用,可以 ...

  8. Unable to execute dex: Multiple dex files define异常的解决办法

    问题: [2016-01-06 16:47:58 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/sup ...

  9. Android - Unable to execute dex: Multiple dex files define

    这种提示的意思是说,引用的文件重复了.在引用json解析库中,clean工程的时候,报错说: Unable to execute dex: Multiple dex files define Lorg ...

随机推荐

  1. 最近学习了HBase

    HBase是什么 最近学习了HBase,正常来说写这篇文章,应该从DB有什么缺点,HBase如何弥补DB的缺点开始讲会更有体感,但是本文这些暂时不讲,只讲HBase,把HBase相关原理和使用讲清楚, ...

  2. PostgreSQL 窗口函数 ( Window Functions ) 如何使用?

    一.为什么要有窗口函数 我们直接用例子来说明,这里有一张学生考试成绩表testScore: 现在有个需求,需要查询的时候多出一列subject_avg_score,为此科目所有人的平均成绩,好跟每个人 ...

  3. STM32F0_HAL库驱动描述——LL驱动程序概述

    LL驱动概述 低层(LL)驱动器旨在提供快速轻量级的专家导向层,它比硬件更接近硬件: 与HAL相反,LLAPI不适用于优化访问不是关键功能的外设设备,或者需要大量软件配置和/或复杂的高级堆栈(如USB ...

  4. c# Inner Join sql 和 Enumerable.Join

    using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp1 { class Pro ...

  5. C#3.0新增功能10 表达式树 05 解释表达式

    连载目录    [已更新最新开发文章,点击查看详细] 表达式树中的每个节点将是派生自 Expression 的类的对象. 该设计使得访问表达式树中的所有节点成为相对直接的递归操作. 常规策略是从根节点 ...

  6. pycharm remote debug

    换工作了好久没写blog了,堕落了,哈哈,发现了好的东西分享一下,和以前使用的pycharm的远程debug相比,更为方便,原理同步本地和远程的代码,加载远程的环境运行,使用本地的代码+远程的环境,方 ...

  7. 关于Hack术语方面

    1.肉鸡       所谓“肉鸡”是一种很形象的比喻,比喻那些可以随意被我们控制的电脑,对方可以是WINDOWS系统,也可以是UNIX/LINUX系统,可以是普通的个人电脑,也可以是大型的服务器,我们 ...

  8. tp3 的前端内置标签

    Volist 标签 volist标签通常用于查询数据集(select 方法),对于查询出来的结果数组进行遍历输出. 首先赋值: $User = M("User"); $list = ...

  9. Python3数据驱动ddt

    对于同一个方法执行大量数据的程序时,我们可以采用ddt数据驱动的方式,来对数据规范化整理及输出 一.需要使用python的ddt库,ddt,data,unpack方法 1.仅使用ddt和data,代码 ...

  10. 定时延时设计FPGA

    以50MHZ时钟为例,进行1秒钟延时,并输出延时使能信号. 首先计算需要多少次计时,MHZ=10的六次方HZ.T=20ns 一秒钟需要计时次数为5的七次方即5000_0000. 然后计算需要几位的寄存 ...