阿里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

阿里热修复的其他功能我们需要使用,所以只能用②或者③ 如下图

 不要忘记 ( ) { }  哦!

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