Помилка: Помилка виконання для завдання ': 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.