您好,登錄后才能下訂單哦!
手頭開發的APP集成了Facebook Ad jar 包AudienceNetwork.jar,打算更新到其最新版本4.14.1。
刪除本地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后綴的文件,我們只看配置文件就好,如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.facebook.android</groupId>
<artifactId>audience-network-sdk</artifactId>
<version>4.14.1</version>
<packaging>aar</packaging>
<name>Audience-Network-SDK</name>
<description>Facebook Audience Network SDK for Android</description>
<url>https://developers.facebook.com/products/app-monetization/audience-network/</url>
<licenses>
<license>
<name>Facebook Platform License</name>
<url>https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt</url>
<distribution>repo</distribution>
</license>
<license>
<name>Apache License Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>facebook</id>
<name>Facebook</name>
</developer>
</developers>
<scm>
<url>https://developers.facebook.com/docs/android/downloads</url>
</scm>
<dependencies>
<dependency>
<groupId>com.google.android.gms</groupId>
<artifactId>play-services-ads</artifactId>
<version>8.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>23.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>recyclerview-v7</artifactId>
<version>23.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
顯然,報錯就是在打包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 :
再次編譯,成功!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。