重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
手头开发的APP集成了Facebook Ad jar 包AudienceNetwork.jar,打算更新到其最新版本4.14.1。
创新互联建站是一家专业提供龙岗企业网站建设,专注与网站设计制作、成都做网站、H5高端网站建设、小程序制作等业务。10年已为龙岗众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
删除本地lib库里的老的AudienceNetwork.jar,在app的build.gradle的dependencies里添加
compile ('com.facebook.android:audience-network-sdk:4.14.1')
编译报错如下信息:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/internal/zzaa.class
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
从duplicate entry看是有重复的类被打包导致Excepion,查阅Gradle文档,可以排除重复文件打包,接下来的问题是排查下是哪个文件有问题,从上述信息看,应该是从com.google.android.gms下的某个类,考虑到之前使用facebook jar单独打包并没有发生此问题,那么就应该是编译依赖的4.14.1导致的。
到依赖仓库jcenter的老家Jfrog bintray逛逛,搜索facebook,找到audience-network-sdk:4.14.1的对应文件,有2个分别是aar和pom后缀的文件,我们只看配置文件就好,如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
显然,报错就是在打包play-services-ads时产生的,因为需要集成Firebase,在build.gradle中添加了
apply plugin: 'com.google.gms.google-services'
导致把google服务的全家桶都加了进来,自然也会有广告服务,冲突由此产生。
找到原因就很好解决了,在编译时把重复的去除就可以了。
原build.gradle里依赖部分:
dependencies { compile fileTree(: , : []) compile compile compile compile compile } apply :
更新后:
dependencies { compile fileTree(: , : []) compile compile compile compile compile () { exclude : exclude : exclude : } } apply :
再次编译,成功!