android studio gradle 友盟自动更新jar包 okio冲突

来源:互联网 发布:淘宝买家秀点赞没了 编辑:程序博客网 时间:2024/05/02 02:28

近期较闲,总结一下最近两个项目中遇到的坑,首先就是友盟自动更新。

友盟集成自动更新sdk时,下载了sdk集成进项目,当时的项目中用了OKHttp框架,而该框架又要依赖okio包,于是问题就来了:

首先报错:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 2

value2 一般是多重引用的问题,以前也遇到过,于是我在gradle里加了multiDexEnabled true,

但又报错:java.util.zip.ZipException: duplicate entry: com/okio/AsyncTimeOut.class

搜索了很多方法,最常见的就是去掉gradle中的

compile 'com.squareup.okio:okio:1.5.0'

不行,继续报同样的错,

再比如加:

packagingOptions {        exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'        exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'}
不行,还是报错。


比如加:

android {     configurations{        all*.exclude module: 'com.squareup.okio',module:"okio"    }}

倒是不报错了,也能安装apk了,一运行调用okhttp就crash了,原因是okhttp找不到okio中的方法了。


这些的原因就是友盟它把okio的包放进了jar包里,我的项目中也要编译okio,于是就多重引用(multi-dex)了。


最终的解决方法就是重新下载不带wire的友盟自动更新sdk,它默认的版本是带wire的,集成进项目后,顺利gradle--build--run,但是没有收到自动更新的通知,加了回调发现没有任何回调回来,当时看log貌似是哪个方法没找到(具体忘了..),看了官方的sample,它加入了wire-runtime-1.7.0.jar 这个jar包,也就是说sdk虽然是不带wire版本的,但还是要手动依赖wire包的,加入了该jar包后,一切终于正常了……


上述就是心塞的解决过程,总结一下就是:

1.下载友盟自动更新不带wire版本的sdk 

2.添加wire-runtime jar包

3.gradle中添加multiDexEnabled true


吐槽一下,友盟的各种sdk经常和其他的包冲突,在jar包里把第三方的code连包带码直接放进去,这样简直是给开发者埋下无数坑啊





1 0
原创粉丝点击