2017-02-09 45 views
3

我正在从Eclipse项目转换到Android Studio。这并不容易。我试图放置AdMob横幅,并得到了这样的错误。Android说重复的项目,但它不是

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/ads/identifier/AdvertisingIdClient$zza.class

项目中只有1 AdvertisingIdClient$zza.class文件。
为什么我得到这个错误?
我已经花了很多时间在这个上,但没有线索。
任何人都可以帮助我吗?


感谢您的回复。这是我的gradle文件。

APP-gradle这个>>>>

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 13 
    buildToolsVersion "25.0.2" 

    defaultConfig { 
     applicationId "sw.ko.aaaaa.bbbbb" 
     minSdkVersion 9 
     targetSdkVersion 9 
     multiDexEnabled true 
    } 

    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles 'proguard.cfg' 
     } 
    } 
} 

dependencies { 
    compile files('libs/activation.jar') 
    compile files('libs/additionnal.jar') 
    compile files('libs/commons-email-1.2.jar') 
    compile files('libs/commons-net-2.0.jar') 
    compile files('libs/google-play-services.jar') 
    compile files('libs/mail.jar') 
    compile files('libs/twitter4j-core-android-2.2.5.jar') 
} 

apply plugin: 'com.google.gms.google-services' 

另一个gradle这个文件是...

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

外部库...

Android API 13 Platform 
1.8 
firebase-analytics-9.0.0 
firebase-analytics-impl-9.0.0 
firebase-common-9.0.0 
firebase-core-9.0.0 
firebase-iid-9.0.0 
multidex-1.0.1 
multidex-instrumentation-1.0.1 
play-services-base-9.0.0 
play-services-basement-9.0.0 
play-services-tasks-9.0.0 
support-v4-23.0.0 
+0

这通常是因为您使用两个库都具有共享依赖关系,所以它会尝试将它们添加到已编译的应用程序中。看到这个问题的更多细节:http://stackoverflow.com/a/39388746/3061857 – nbokmans

+0

有相同的各种SO链接,但从我个人的经验,当我尝试迁移它是地狱。尝试了一个星期后。我放弃。创建了新的Andriod Studio项目,并将代码从eclipse复制到需要的地方。 –

+0

你需要显示你的'build.gradle'。 –

回答

1

删除对谷歌播放的所有引用服务(JAR文件和其他Gradle线)

添加这一个AdMob联播

dependencies { 
    ... 

    compile 'com.google.android.gms:play-services-ads:10.0.1' 
} 

添加更多的依赖于other GoogleFirebase服务。


我宁愿这样做,以保持所有版本相同。

ext { 
    // Variables to keep libraries consistent 
    googlePlayServicesVersion = '10.0.1' 
} 

dependencies { 
    ... 

    compile "com.google.android.gms:play-services-ads:${googlePlayServicesVersion}" 
} 
+0

我试过你的第二个建议,它工作!非常感谢。现在我遇到了另一个问题:java.lang.IllegalStateException:在调用loadAd之前,必须设置广告尺寸和广告单元ID。无论如何,再次感谢你。 :) –

+0

第二个建议是第一个重构。你只需要删除'编译文件('libs/google-play-services.jar')'并且基本上添加其他文件。您可以使用我的答案旁边的复选标记接受它:) –

相关问题