Android studio打包混淆编译的时候出现异常:transformClassesAndResourcesWithProguardForRelease

具体异常信息截取如下:

Browser/build/intermediates/exploded-aar/com.google.android.gms/play-services-analytics/7.8.0/jars/classes.jar(;;;;;;**.class)] (Duplicate zip entry [com/google/android/gms/ads/a/a.class == classes.jar:com/google/android/gms/ads/identifier/AdvertisingIdClient.class]))
大致意思是说, 有两个引用的依赖重复依赖同一个类, 在这里就是AdvertisingIdClient类, 在studio里面按ctrl+N查看, 确实有两个相同的类, 这个类分别在不同的依赖包里面.

查看代码后得知:

在我的app/gradle文件中有如下引入:

compile files('src/main/libs/google-play-services.jar')
这个jar是放在工程的lib文件加下面的. 这个包含有了google广告模块' play-services-ads'

而在我的gradle中还有这么一句引用:

compile ('com.facebook.android:audience-network-sdk:4.8.2')
这个引入了facebook的广告模块, 很不凑巧的是,在这个依赖中本身就含有google的广告模块'play-services-ads', 所以一旦混淆编译就会出现了上面的错误.

所以我们需要在这个compile中增加exclude, 把google的广告模块去掉,如下:

compile ('com.facebook.android:audience-network-sdk:4.8.2'){
            exclude module: 'play-services-ads'
        }
这样这个错误就没有了.


平时如何查看一个依赖是否包含了其他依赖呢? 使用如下命令:

./gradlew -q app:dependencies

app表示你自己的module的名称,可自行修改

具体可参考: http://blog.csdn.net/fdoubleman/article/details/55684462


ps 一般我们使用compile方式依赖的远程maven仓库的依赖包或是lib下面的aar文件, build之后会在工程的External Libraries目录下列出来,而我们lib下面的jar就直接在lib上面可以看到相关的class文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值