Unild Gradle Build не удалось. DexException: несколько файлов dex определяют - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу создать приложение для Unity, которое будет показывать рекламный баннер Admob. Итак, следуя этому , я добавил плагин Admob Unity. Но при сборке возникает следующая ошибка.

Это консоль:

CommandInvokationFailure: Gradle build failed. 
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx2048m" "assembleRelease"

stderr[
/Users/yuukimatsushima/work/unity/BreakPlates2/Temp/gradleOut/src/main/AndroidManifest.xml:25:13-35 Error:
 Attribute meta-data#android.support.VERSION@value value=(26.1.0) from [:com.android.support.customtabs-26.1.0:] AndroidManifest.xml:25:13-35
 is also present at [:support-compat-26.0.2:] AndroidManifest.xml:28:13-35 value=(26.0.2).
 Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processReleaseManifest'.
> Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.1.0) from [:com.android.support.customtabs-26.1.0:] AndroidManifest.xml:25:13-35
   is also present at [:support-compat-26.0.2:] AndroidManifest.xml:28:13-35 value=(26.0.2).
   Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.
...

Над логом написано add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override., поэтому я добавляю следующий код.

Активы / Плагины / Android / AndroidManifest.xml:

<manifest>
    <application>
        ...
        <meta-data
            tools:replace="android:value"
            android:name="android.support.VERSION"
            android:value="26.0.2" />

    </application>
</manifest>

Тогда вышеуказанная ошибка устранена. Однако возникает следующая ошибка.

Это консоль:

CommandInvokationFailure: Gradle build failed. 
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-4.2.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx2048m" "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformDexWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/common/api/zzd;
...

Скажите, пожалуйста, как устранить эту ошибку. Заранее спасибо.

Примечание: Версия Unity: версия 2018.2.6f1 Personal

Ответы [ 4 ]

0 голосов
/ 11 апреля 2019

Я решил ошибку следующим образом: Услуги -> Реклама -> Дополнительно -> Снять отметку: включить встроенное расширение рекламы.

кредитов: https://forum.unity.com/threads/android-build-multiple-dex-files-error-multiple-dex-files-define-lcom-google-unity-buildconfig.542843/

0 голосов
/ 08 сентября 2018

Наконец-то я решил эту ошибку самостоятельно. В моем случае сработало следующее решение.

  1. Unity> Файл> Настройки сборки> Экспорт
  2. В проекте Android удалите все .jar и .aar в библиотеках, кроме unity-classes.jar и NcmbGcmPlugins.arr.
  3. редактировать build.gradle
  4. пробег

Это build.gradle (уровень приложения)

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

buildscript {
    repositories {
        jcenter()
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

allprojects {
    repositories {
        flatDir {
            dirs 'libs'
        }
        // EDIT: added following 3 lines.
        maven {
            url "https://maven.google.com"
        }
    }
}

apply plugin: 'com.android.application'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'NcmbGcmPlugin', ext:'aar')
//    implementation(name: 'android.arch.lifecycle.runtime-1.0.0', ext:'aar')  // EDIT: removed
//    implementation(name: 'com.android.support.customtabs-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-compat-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-core-ui-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-core-utils-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-fragment-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-media-compat-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.android.support.support-v4-26.1.0', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-ads-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-ads-base-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-ads-identifier-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-ads-lite-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-basement-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'com.google.android.gms.play-services-gass-15.0.1', ext:'aar') // EDIT: removed
//    implementation(name: 'play-services-base-11.0.0', ext:'aar') // EDIT: removed
//    implementation(name: 'play-services-basement-11.0.0', ext:'aar') // EDIT: removed
//    implementation(name: 'play-services-gcm-11.0.0', ext:'aar') // EDIT: removed
//    implementation(name: 'play-services-iid-11.0.0', ext:'aar') // EDIT: removed
//    implementation(name: 'play-services-tasks-11.0.0', ext:'aar') // EDIT: removed
//    implementation(name: 'support-compat-26.0.2', ext:'aar') // EDIT: removed
//    implementation(name: 'support-core-utils-26.0.2', ext:'aar') // EDIT: removed
//    implementation(name: 'support-v4-26.0.2', ext:'aar') // EDIT: removed

    implementation 'com.android.support:support-v4:26.1.0' // EDIT: added
    implementation 'com.google.android.gms:play-services-ads:15.0.1' // EDIT: added

    implementation project(':GoogleMobileAdsPlugin')
    implementation project(':unity-android-resources')

}

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.0'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        applicationId 'blue.macho.breakplates2'
        ndk {
            abiFilters 'armeabi-v7a', 'x86'
        }
        versionCode 1
        versionName '1.0'
    }
    // ...
}
0 голосов
/ 03 декабря 2018

Нашел решение с форума единства, которое у меня работает. Изменить систему сборки с Gradle на внутреннюю

Ссылка https://forum.unity.com/threads/android-build-multiple-dex-files-error-multiple-dex-files-define-lcom-google-unity-buildconfig.542843/

от sRn " Привет, Я надеюсь, что это ошибка Unity, и она будет исправлена ​​в какой-то момент, потому что я начал получать эту ошибку после того, как обновил свой проект до версии Unity 2018.2.1f1. Чтобы исправить это, вы можете попробовать включить Multidex, но после того, как я это сделал, я застрял в другой проблеме, поэтому я больше не беспокоился и вернулся к 2018.1.x - который отлично работает для меня. Также вы можете просто изменить систему сборки с Gradle на внутреннюю (в File-> Build Settings -> Build System), что также сработало для меня, но я хотел остаться с Gradle, чтобы иметь больше контроля, поэтому было больше смысла возвращаться до 2018,1. «

0 голосов
/ 02 сентября 2018

Проверьте свои внешние библиотеки в Android studio и добавьте свои настройки build.gradle этим кодом

implementation fileTree(include: ['*.jar'], dir: 'libs', exclude: ['classes.jar']) compileOnly files('libs/classes.jar')

(classes.jar - это имя файла, включающее com / google / android / gms / common / api / zzd)

...