2017-02-09 1 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 >>>>

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

Удалить все ссылки на Google Play Услуги (файлы JAR и другие линии Gradle)

Добавить этот для AdMob

dependencies { 
    ... 

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

Добавить несколько зависимостей для other Google или Firebase услуг.


Я бы предпочел сделать это таким образом, чтобы все версии были одинаковыми.

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». В любом случае, еще раз спасибо. :) –

+0

Второе предложение - это рефакторинг первого. Вам просто нужно было удалить «компилировать файлы (« libs/google-play-services.jar ») и добавить остальные в основном. Вы можете использовать галочку рядом с моим ответом, чтобы принять ее :) –