阿里hotfix打包異常:transformClassesWithJarMergingForRelease

發現問題:

異常信息:

查找問題:

這是由於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

阿里熱修復的其他功能我們需要使用,所以只能用②或者③ 如下圖

 不要忘記 ( ) { }  哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章