Помилка: Помилка виконання для завдання ': app: transformClassesWithDexForDebug'


74

Помилка

Помилка: Помилка виконання для завдання ': app: transformClassesWithDexForDebug'. com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Процес 'command' / usr / lib / jvm / java-8-oracle / bin / java '' закінчено з ненульовим значенням виходу 1

Файл мого додатка gradle:

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId 'Hidden application ID'
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        disable 'InvalidPackage'
    }
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
    productFlavors {
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.facebook.android:facebook-android-sdk:4.7.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.2.1'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.android.support:preference-v7:23.1.1'
}

Під час налагодження, якщо я встановлюю для minifyEnabled значення true, він компілюється. Однак тоді я не можу налагодити свою програму.

Я перевірив це інше питання: Помилка виконання для завдання ': app: transformClassesWithDexForDebug' під час реалізації входу Google для Android , але є лише одна відповідь, і її реалізація, на жаль, не вирішує проблему.

AFAIK, помилка викликана додаванням забагато залежностей Gradle, але я можу помилятися (я справді сподіваюся помилитися, тому що всі ці пакети дійсно важливі!).

Будь ласка, допоможіть мені виправити цю помилку. Дуже дякую!


1
Чи можете ви опублікувати повний стек помилки? Для цього біжи./gradlew clean build --full-stacktrace
— Олексій Липов

2
@Alex я спробував команду ur, але вона не вдалася в той самий момент, і це призводить до тієї ж помилки org.gradle.api.tasks.TaskExecutionException: Помилка виконання для завдання ': app: transformClassesWithDexForDebug'.
— Антван

1
Будь ласка, перегляньте мою відповідь, а також прийняту відповідь на це посилання
— Stackoverflow

Відповіді:


50

Просто виправте залежності сервісів Google Play:

Ви включаєте всі ігрові послуги у свій проект. Додавайте лише тих, кого хочете.

Наприклад, якщо ви використовуєте лише карти та g + вхід, то змініть

 compile 'com.google.android.gms:play-services:8.1.0'

до

compile 'com.google.android.gms:play-services-maps:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'

З документа:

У версіях сервісів Google Play до 6.5 вам потрібно було скомпілювати весь пакет API у своєму додатку. У деяких випадках це ускладнювало підтримку кількості методів у вашому додатку (включаючи API інтерфейсу, бібліотечні методи та власний код) у межах 65 536.

Починаючи з версії 6.5, ви можете замість цього вибірково компілювати API служб Google Play у свій додаток. Наприклад, щоб включити лише API Google Fit та Android Wear, замініть у файлі build.gradle наступний рядок:
compile 'com.google.android.gms: play-services: 8.3.0'
такими рядками:

компілювати 'com.google.android.gms: play-services-fitness: 8.3.0'
компілювати 'com.google.android.gms: play-services-wearable: 8.3.0'

Весь список можна знайти тут .


25

Спробуйте

dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}

Я не знаю причини. Щось про preDexLibraries: https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/tips

Відповідно до @ lgdroid57:

Наступний ресурс повинен допомогти пояснити, що робить цей код: посилання ( http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html ) Властивість | Опис javaMaxHeapSize | Встановлює значення -JXmx * під час виклику dx. Формат повинен відповідати 1024M. preDexLibraries | Чи до бібліотек попередньої розробки. Це може покращити поступові збірки, але чисті збірки можуть бути повільнішими.


Чи можете ви пояснити, що це робить?
— Сакет Джейн

Я не знаю. Я просто бачу, що в multiDexEnabled. Або ви можете очистити ваш проект і видалити папку збірки.
— крихітне сонячне світло

Гаразд, чи можете ви надати своє джерело?
— Сакет Джейн

1
Наступний ресурс повинен допомогти пояснити, що робить цей код: link Property | Опис javaMaxHeapSize | Встановлює значення -JXmx * під час виклику dx. Формат повинен відповідати 1024M. preDexLibraries | Чи до бібліотек попередньої розробки. Це може покращити поступові збірки, але чисті збірки можуть бути повільнішими.
— lgdroid57,

нарешті ця відповідь була єдиною, яка спрацювала для мене! thnx
— Амр Мохаммед

20

Спробуйте додати multiDexEnabled trueдо build.gradleфайлу програми .

  defaultConfig {
    multiDexEnabled true
}

Цієї відповіді було достатньо, щоб вирішити мою проблему.
— Giraldi

15

Це проблема Multidex. Ви можете спробувати видалити якусь банку, або ви можете спробувати так: http://developer.android.com/tools/building/multidex.html#mdex-gradle у програмі build.gradle:

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

У вашому маніфесті:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

14

додати multiDexEnabled trueв default config fileз build.gradleтак

    defaultConfig {
        multiDexEnabled true
       }

2
Це спрацювало для мене. Хтось може пояснити, чому це працює.
— Пракаш

8

Рішення, яке працювало особисто для мене, було:

в build.gradle

defaultConfig {
        multiDexEnabled true
    }

 dexOptions {
        javaMaxHeapSize "4g"
    }

5

Моя відповідь трохи стара, але для мого єдиного рішення було додавання опції multiDexEnabled в defaultConfig, як це:

    android{
        ...
        defaultConfig{
            ...
            multiDexEnabled true
        }
    }

Якщо це не працює, спробуйте додати цей фрагмент коду:

    configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.1.0'
            }
        }
    }
}

Моя помилка була пов’язана з проблемою з різними версіями бібліотек, і це зробило фокус.

Сподіваюся, це може комусь допомогти :)


2

Переконайтесь, що ви не використовуєте дві версії служби Google.

Наприклад, маючи:

compile 'com.google.firebase:firebase-messaging:9.8.0'

і

compile 'com.google.firebase:firebase-ads:10.0.0'

У моєму випадку мені довелося оновити версії інших com.googleбібліотек до останньої версії, щоб вирішити проблему.
— Мануель

1

У мене виникла ця проблема, коли я оновив плагін Gradle з версії 1.2.3 до 1.5.0, як запропонував Android Studio. На його веб-сторінці 1.5.0 видається бета-версією.

Чесно кажучи, я не знаю, які переваги має версія 1.5.0, але я волів би почекати, поки з’явиться стабільна версія.

Звичайно, повернення до 1.2.3 вирішило проблему.


Я стикаюся з проблемою Gradle 1.2.2, тому не впевнений, чи залежить його gradle?
— Сакет Джейн

@SaketJain Ви пробували будь-яку іншу версію? Ви використовуєте 64-бітну Java на 64-бітній машині? Є багато змінних, які можуть вплинути.
— Мігель Паласіо,

До речі, я спробував обхідні шляхи, запропоновані в інших відповідях (зміна розміру купи та зменшення залежностей наскільки це можливо), але жоден з них не спрацював для мене.
— Мігель Паласіо,

Я спробував інші відповіді, але ні, вони не спрацювали для мене. Тому я не прийняв жодної відповіді.
— Сакет Джейн

1

Можлива допомога

Пробували як останню інстанцію після вичерпання всіх інших варіантів

Я видалив усі накопичувачі пам'яті (ОЗУ), крім одного. Зараз у мене менше пам'яті, але вона знову працює. Я не можу прикинутися, що знаю, чому в процесі збірки завжди знаходилась пошкоджена пам’ять, чи це на 100% першопричина - в іншому система працювала нормально. Можливо, це щось спробувати, на щастя.


1

Для мене закриття всіх інших Android Studio вирішило проблему.

Я відкрив 3 андроїд-студії, коли отримував помилку, після закриття 2 не отримав жодної помилки.

Не потрібно додавати будь-який код, пов’язаний з multiDex!


1

Не потрібно мультитекс. Для "старого" проекту, відкритого в Android Studio 2.1, він змінив версію плагіна gradle з 1.5.0 на 2.1.0, що вирішило для мене проблему.

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

1

Я це вирішив! Це колекція конфігурації та оновлення. Додайте ці змінні там, де вони вміщуються в build.gradle

android {
packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}
dexOptions {
    javaMaxHeapSize "4g"
}
defaultConfig {
    multiDexEnabled true
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
}

Тоді оновіть до Java 8, http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/і все буде вирішено! Це через buildToolsоновлення та нову студію Android. Ніщо інше не підведе.


1

Змінюючись

компілювати 'com.google.android.gms: play-services: 8.1.0'

Проблему можна вирішити лише для необхідних файлів. Ця проблема генерується через перевищення кількості файлів у файлі build.gradle.


1

Очевидно, я вирішив проблему, об'єднавши всі рішення, додавши наступне до android manifest:

<application
...
        android:name="android.support.multidex.MultiDexApplication" >
...
</application>

Далі йде модуль програми build.gradle

android {
...

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
...
    defaultConfig {

        multiDexEnabled true

   }

}

1

Зайдіть у Build -> Очищення та запустіть програму ще раз


1

Зайдіть в Build ->

Чистий проект ->

Запустити проект: виконано

працює над Android 5.1 для мене




0

У мене була ця проблема, коли я делегував своє завдання компіляції на Google Compute Engine через SSH. Природа цієї проблеми - помилка пам’яті, про що свідчить журнал збоїв; зокрема, це викидається, коли в Java закінчується віртуальна пам'ять для роботи під час побудови.

Важливо: Коли gradle аварійно завершує роботу через цю помилку пам'яті, демони gradle залишаються запущеними ще довго після того, як завдання компіляції не вдалося. Будь-яка повторна спроба побудови за допомогою gradle знову виділить новий демон gradle. Ви повинні переконатися, що ви належним чином утилізуєте будь-які аварійні екземпляри, використовуючи gradlew --stop .

hs_error_pid креш логи вказує наступні обхідні шляхи:

# There is insufficient memory for the Java Runtime Environment to continue.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=

Я виявив, що після збільшення ресурсів середовища виконання віртуальної машини ця проблема була вирішена.


0

У мене була подібна помилка. Я виправив це, просто переключивши каталог. Знову клоную свій проект із мого сховища git, імпортую його в андроїд-студію та будую. Схоже, один із каталогів / файлів, створених Android Studio під час створення вашого проекту, може бути пошкоджений. Видалення всіх створених Android Studio файлів у вашому проекті або виконання того, що я зробив, може вирішити проблему. Сподіваюся, це допомагає.


0

Усім, хто стикався з цією проблемою / стикатися з нею в майбутньому:

Клацніть на меню побудови -> Виберіть варіант збірки -> відновити до `` налагодження ''

Зауваження щодо налагоджуваного в модулі: app / * debug {debuggable true} * /

Зайдіть в меню Build -> створити підписаний apk -> .... -> побудувати його


0

Перемістіть заявку на додаток у нижній частині файлу:

застосувати плагін: 'com.google.gms.google-services'


0
  1. Виконати: плагін cordova rm cordova-plugin-compat --force
  2. Виконати: плагін cordova додати cordova-plugin-compat@1.2
  3. Змінити: config.xml у папці проекту використовуйте "6.2.3", а не "^ 6.2.3", потім видаліть папку платформ / android, повторно запустіть cordova pripravть android і cordova build android

0

Не божеволійте, я просто прибираю, потім відновлюю проект, і помилка зникла


0

У мене виникла ця помилка під час запуску проекту Ionic на пристрої Android, і я вирішив її, видаливши та додавши платформу android:

ionic cordova platform remove android
ionic cordova platform add android

0

У моєму випадку: -

  • Що пішло не так: не вдалося виконати завдання ': app: multiDexListDebug'.

Відповідь: -

Я щойно видалив react-native-firebaseпапку, яка буде всерединіnode_modules папки, ось і все, що я міг успішно запустити програму.

І ще одна річ, не забудьте видалити, react-native-firebaseале не @react-native-firebaseу файлі package.json. Так що наступного разу, коли ви біжите npm Iабо yarn. Це не буде встановлено у вашому додатку.

Проблемою став цей пакет.


-1

Якщо використовується java 8 або вище, проблема полягає в тому, що використовувані нами бібліотеки несумісні з java 8. Тож для вирішення цього питання додайте ці два рядки до build.gradle вашого додатка та всіх підмодулів, якщо такі є. (Студія Android наочно показує, як це зробити, у повідомленні про помилку)

targetCompatibility = '1.7' sourceCompatibility = '1.7'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.