54

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

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 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 истинно, затем он компилируется. Однако я не могу отлаживать свое приложение.

Я проверил этот другой вопрос: Execution failed for task ':app:transformClassesWithDexForDebug' while implementing Google sign in for Android, но есть только один ответ, и его реализация не решает проблему, к сожалению.

AFAIK, ошибка возникает из-за добавления слишком большого количества зависимостей Gradle, но я могу ошибаться (я действительно надеюсь ошибиться, потому что все эти пакеты действительно важны!).

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

+0

Может ли ваше сообщение отслеживать полный стек трассировки? Для этого запустите './gradlew clean build --full-stacktrace' –

+2

@Alex я попробовал команду ур, но она не сработала в той же точке, и она дает мне такую ​​же ошибку org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для task ': app: transformClassesWithDexForDebug'. – Tony

+1

Просьба передать мой ответ, а также принятый ответ на эту ссылку [Stackoverflow Link] (http://stackoverflow.com/a/37202393/2094075) – user2094075

ответ

23

Попробуйте

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 | Будь то библиотеки pre-dex. Это может улучшить инкрементные сборки, но чистые сборки могут быть медленнее.

+0

Не могли бы вы объяснить, что это делает? –

+0

Я не знаю. Я просто вижу, что в multiDexEnabled. Или вы можете очистить проект и удалить папку сборки. –

+0

Хорошо, можете ли вы предоставить свой источник? –

46

Только правильные игровые услуги зависимости Google:

Вы включая все услуги игры в вашем проекте. Добавляйте только те, которые вы хотите.

Например, если вы используете только карты и г + зарегистрировались, чем изменение

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' 

Из док:

In versions of Google Play services prior to 6.5, you had to compile the entire package of APIs into your app. In some cases, doing so made it more difficult to keep the number of methods in your app (including framework APIs, library methods, and your own code) under the 65,536 limit.

From version 6.5, you can instead selectively compile Google Play service APIs into your app. For example, to include only the Google Fit and Android Wear APIs, replace the following line in your build.gradle file:
compile 'com.google.android.gms:play-services:8.3.0'
with these lines:

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.3.0'

Whole list can be found here.

1

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

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

Конечно, вернемся к 1.2.3, решив проблему.

+0

Я столкнулся с проблемой с Gradle 1.2.2, поэтому не совсем уверен, зависит ли его градуировка? –

+0

@SaketJain Пробовали ли вы какие-либо другие версии? Вы используете 64-битную Java в 64-разрядной машине? Есть много переменных, которые могут повлиять. –

+0

Кстати, я пробовал обходные пути, предложенные в других ответах (изменяя размер кучи и уменьшая зависимости как можно больше), но ни один из них не работал для меня. –

1

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

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

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

13

Это проблема 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> 
1

Для меня закрытие все другой Android-студия решена проблема.

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

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

11

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

defaultConfig { 
     multiDexEnabled true 
     } 
+1

Это сработало для меня. Может кто-нибудь объяснить, почему это работает. – Prakash

1

Нет необходимости MULTITEX. Для «старого» проекта, открытого в Android Studio 2.1, он менял версию плагина gradle от 1.5.0 до 2.1.0, что фиксировало проблему для меня.

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

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

0

У меня была эта проблема, когда я делегировал свою задачу компиляции на Google Compute Engine через SSH. Характер этой проблемы - ошибка памяти, о чем свидетельствует журнал сбоев; в частности, он бросается, когда Java заканчивается из виртуальной памяти для работы во время сборки.

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

The 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= 

я обнаружил, что после того, как increasing the runtime resources of the virtual machine, этот вопрос был решен.

0

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

1

Изменяя

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

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

0

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

Нажмите на меню Build -> Выберите Построить Variant -> восстановить «отладить»

Outcomment на отладочном в модуле: приложение /* отладки { отладке верно } */

Перейти построить меню -> генерировать подписанную APK -> .... -> построить его

0

Перемещение заявл у плагиной объявление в нижней части файла:

применять плагин: «com.google.gms.google-услуга»

0

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

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

Следуя build.gradle модуль App

android { 
... 

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

     multiDexEnabled true 

    } 

} 
1

Перейти в Build -> Clean и запустить приложение снова

10

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

defaultConfig { 
    multiDexEnabled true 
} 
1

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

Для примера, имеющий:

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

и

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

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

в build.gradle

defaultConfig { 
     multiDexEnabled true 
    } 

dexOptions { 
     javaMaxHeapSize "4g" 
    } 
0

Перейти в Строить - >

Clean Project ->

Выполнить проект: сделать

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