手頭開發(fā)的APP集成了Facebook Ad jar 包AudienceNetwork.jar,打算更新到其最新版本4.14.1。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供龍崗企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為龍崗眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
刪除本地lib庫(kù)里的老的AudienceNetwork.jar,在app的build.gradle的dependencies里添加
compile ('com.facebook.android:audience-network-sdk:4.14.1')
編譯報(bào)錯(cuò)如下信息:
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看是有重復(fù)的類被打包導(dǎo)致Excepion,查閱Gradle文檔,可以排除重復(fù)文件打包,接下來的問題是排查下是哪個(gè)文件有問題,從上述信息看,應(yīng)該是從com.google.android.gms下的某個(gè)類,考慮到之前使用facebook jar單獨(dú)打包并沒有發(fā)生此問題,那么就應(yīng)該是編譯依賴的4.14.1導(dǎo)致的。
到依賴倉(cāng)庫(kù)jcenter的老家Jfrog bintray逛逛,搜索facebook,找到audience-network-sdk:4.14.1的對(duì)應(yīng)文件,有2個(gè)分別是aar和pom后綴的文件,我們只看配置文件就好,如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
顯然,報(bào)錯(cuò)就是在打包play-services-ads時(shí)產(chǎn)生的,因?yàn)樾枰蒄irebase,在build.gradle中添加了
apply plugin: 'com.google.gms.google-services'
導(dǎo)致把google服務(wù)的全家桶都加了進(jìn)來,自然也會(huì)有廣告服務(wù),沖突由此產(chǎn)生。
找到原因就很好解決了,在編譯時(shí)把重復(fù)的去除就可以了。
原build.gradle里依賴部分:
dependencies { compile fileTree(: , : []) compile compile compile compile compile } apply :
更新后:
dependencies { compile fileTree(: , : []) compile compile compile compile compile () { exclude : exclude : exclude : } } apply :
再次編譯,成功!