Ошибка: не удалось выполнить задачу ':app:transformClassesWithDexForDebug'

Ошибка

Ошибка: не удалось выполнить задачу ':app:transformClassesWithDexForDebug'. com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: обработать "команду" /usr/lib/jvm/java-8-oracle/bin/java'' завершено с ненулевым значением выхода 1

Файл моего приложения:

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, но я могу ошибаться (я действительно надеюсь ошибаться, потому что все эти пакеты действительно важны!).

Пожалуйста, помогите мне решить эту ошибку. Большое спасибо!

29 ответов

Просто исправьте зависимости сервисов 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:
скомпилируйте 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'

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

Пытаться

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) Property | Описание javaMaxHeapSize | Устанавливает значение -JXmx* при вызове dx. Формат должен соответствовать шаблону 1024M. preDexLibraries | Будь то pre-dex библиотеки. Это может улучшить добавочные сборки, но чистые сборки могут быть медленнее.

Попробуйте добавить multiDexEnabled true в ваше приложение build.gradle файл.

  defaultConfig {
    multiDexEnabled true
}

Это проблема с Multidex . Вы можете попытаться удалить банку, или вы можете попробовать вот так: http://developer.android.com/tools/building/multidex.html в приложении 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>

Добавлять multiDexEnabled true в default config file из build.gradle как это

    defaultConfig {
        multiDexEnabled true
       }

Решение, которое работало для меня лично, было:

в build.gradle

defaultConfig {
        multiDexEnabled true
    }

 dexOptions {
        javaMaxHeapSize "4g"
    }

Мой ответ немного устарел, но для меня единственным решением было добавить опцию 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'
            }
        }
    }
}

Моя ошибка была связана с проблемой с разными версиями библиотек, и это помогло.

Я надеюсь, что это может кому-то помочь:)

Убедитесь, что вы не используете две версии сервиса Google.

Например, имея:

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

а также

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

Используя ionic, я смог исправить эту ошибку с помощью команды: "cordova clean"

Просто удалите оба build папка в /android а также /android/app

и построить снова с react-native run-android

Путем изменения

скомпилируйте com.google.android.gms:play-services:8.1.0

только необходимые файлы, проблема может быть решена Эта проблема возникает из-за превышения файлов в файле build.gradle.

Войдите в Build ->

Чистый Проект ->

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

работает на андроид 5.1 для меня

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

Честно говоря, я не знаю, какие преимущества имеет версия 1.5.0, но я бы лучше подождал, пока не появится стабильная версия.

Конечно, возврат к 1.2.3 решил проблему.

Возможная помощь

Попробовал в качестве абсолютного крайнего средства после исчерпания всех других вариантов

Я удалил все карты памяти (RAM), кроме одной. У меня сейчас меньше памяти, но она снова работает. Я не могу притворяться, что знаю, почему процесс сборки всегда находил поврежденную память или это на 100% основная причина - в других отношениях система работала нормально. Может быть, это что-то попробовать, удачи.

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

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

По-видимому, я решил проблему, объединив все решения, добавив следующее в манифест Android:

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

Следование модулю приложения build.gradle

android {
...

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

        multiDexEnabled true

   }

}

Я решил это! Это коллекция конфигурации и обновления. Добавьте эти переменные, где они вписываются в 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-студия. Ничто другое не подведет.

Зайдите в Build -> Очистите и снова запустите ваше приложение

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

Я открыл 3 студии андроида, когда получал ошибку, после того, как закрыл 2, я не получил никакой ошибки.

Нет необходимости добавлять код, связанный с multiDex!

Не сходи с ума, я просто убираю, потом пересобираю проект и ошибка исчезла

  1. Выполнить: кордова плагин рм кордова-плагин-компат --force
  2. Выполнить: плагин cordova добавить cordova-plugin-compat@1.2
  3. Измените: config.xml в папке вашего проекта используйте "6.2.3", а не "^6.2.3", затем удалите папку платформы /android, повторно запустите cordova prepare android и cordova build android

У меня была эта проблема, когда я делегировал свою задачу компиляции в 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=

Я обнаружил, что после увеличения ресурсов времени выполнения виртуальной машины эта проблема была решена.

В моем случае:-

  • Что пошло не так: не удалось выполнить задачу ':app:multiDexListDebug'.

Ответ:-

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

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

Этот пакет был причиной проблемы.

Переместите декларацию применения плагина внизу файла:

применить плагин: 'com.google.gms.google-services'

У меня была эта ошибка при запуске проекта Ionic на устройстве Android, и я решил ее, удалив и добавив платформу Android:

ionic cordova platform remove android
ionic cordova platform add android

У меня была похожая ошибка. Я исправил это, просто переключив каталог. Снова клонирую мой проект из моего репозитория git, импортирую его в android studio и собираю. Похоже, что один из каталогов / файлов, сгенерированных Android Studio при сборке вашего проекта, возможно, был поврежден. Удаление всех сгенерированных Android Studio файлов в вашем проекте или выполнение того, что я сделал, может решить проблему. Надеюсь это поможет.

Всем, кто сталкивался с этой проблемой / столкнется с ней в будущем:

Нажмите на меню Build -> выберите вариант сборки -> восстановить в "отладке"

Результат отладки в модуле:app /* debug { debuggable true }*/

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

Просто удалите .gradle папку с платформы Android, затем заново соберите проект, Android Studio сгенерирует его снова.

Если используется Java 8 или выше, то проблема в том, что используемые нами библиотеки несовместимы с Java 8. Поэтому, чтобы решить эту проблему, добавьте эти две строки в build.gradle вашего приложения и всех подмодулей, если таковые имеются. (Студия Android четко показывает, как это сделать, в сообщении об ошибке)

targetCompatibility = '1.7' sourceCompatibility = '1.7'