发现问题:
异常信息:
查找问题:
这是由于JAR文件重复引用造成,有提示信息可知,项目中重复引用两个含有com.alibaba.sdk.android.utils路径的JAR文件;查看项目的Extranal Libraries可知:
是如图所示红框中的jar重复引起的异常。
问题原因:
查询得知,友盟和阿里云共享阿里巴巴的移动基础生态,友盟推送和阿里云热修复、阿里云移动推送等也同时集成了阿里的基础移动组件。也就是说同时集成友盟和阿里移动系列产品可能会出现一样的组件,造成类似上面的问题。
解决问题:
一.、如果你是通过依赖jar方式集成的以上两种,可以随意删除其中一种中重复的jar。
解决方法:
AS 下 File -> Project Structure ->如图(举例,我是通过compile ‘XX’方式集成的)
二、 通过compile ‘XX’方式集成的以上两种
排除法 :可以随意排除其中一种中重复的jar
我们平时依赖第三方是都是这样写: compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.6' ,这是Gradle一种简写方式
其实它还有一种写法 : compile group: 'com.aliyun.ams', name: 'alicloud-android-hotfix', version: '3.2.6'
简写就是两个:将三个参数值拼接: compile 'group : name : version'
知道以上之后,我们看看怎么排除,先看看重复的jar
group == 'com.aliyun.ams' name == 'alicloud-android-utils' version == '1.1.3'
通常的排除方式有以下几种:
①:exclude group:'XX' // XX 对应于 group 排除整个group
②:exclude module :'XXX' //XXX对应 name 排除group内的某一个name
③:exclude group:'XX',module:'XXX' //排除group 指定的name
阿里热修复的其他功能我们需要使用,所以只能用②或者③ 如下图
不要忘记 ( ) { } 哦!