發現問題:
異常信息:
查找問題:
這是由於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
阿里熱修復的其他功能我們需要使用,所以只能用②或者③ 如下圖
不要忘記 ( ) { } 哦!