com.android.build.transform.api.TransformException


158

Я пытаюсь интегрировать вход в Google, в моем приложении я добавил следующие библиотеки:

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

Также добавьте это в gradle проекта сборки:

classpath 'com.google.gms:google-services:1.4.0-beta3'

Также добавьте плагин в сборку приложения:

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

затем добавьте необходимые разрешения, но когда я пытаюсь запустить приложение, получаю эту ошибку:

    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 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2

Ответы:


312

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

 defaultConfig {
    multiDexEnabled true
}

РЕДАКТИРОВАТЬ:

Сначала попробуйте ответ Стива . Если это происходит часто или первый шаг не помог, multiDexEnabledможет помочь. Для тех, кто любит копать глубже, есть пара похожих вопросов (с большим количеством ответов):

: app: dexDebug ExecException завершено с ненулевым значением выхода 2

Ошибка: не удалось выполнить задачу «: app: dexDebug». com.android.ide.common.process.ProcessException


3
Не работал для меня. Ответ Стива - уборка сделала свое дело. Я только что обновился до AS1.5 Preview
Скотт

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

мне обоим это не помогло - но перезапуск AS наконец добился цели :)
Maciej Boguta

Ни один из них не помог мне, но он начал работать после того, как я перезапустил AS
Maciej Boguta

1
Я бы также посоветовал проверить ответ A Grandt, ниже ( stackoverflow.com/a/33690032/1617737 ), прежде чем приступить к этому решению.
запрет геоинженерии

146

Еще одна вещь, на которую нужно обратить внимание, это то, что вы не используете

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

Это импортирует ВСЕ сервисы воспроизведения, и потребуется всего лишь немного больше, чем привет, чтобы превысить ограничение 65535 методов для одного APK-файла dex.

Всегда указывайте только те услуги, которые вам нужны, например:

compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-plus:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'

10
Ты лучший! Это решило мою проблему. Восстановление не помогает в моем случае, как упоминалось во многих решениях. Как вы упомянули, в библиотеке сервисов Google Play есть много подкомпонентов, и их следует импортировать, как вы сказали, по одному. Большое спасибо, еще раз!
Иван Караванио

2
У меня была эта проблема в последние пару дней. Я думал, что выбрал только то, что мне нужно. Но, к сожалению, после нескольких часов поисков я импортировал все игровые сервисы, а все, что мне было нужно, это реклама игровых сервисов. Обязательно проверяйте ваши люди!
MCLLC

@ А.Грандт, не могли бы вы добавить ссылку, которую Иван дал на ваш ответ? Он содержит список имен всех подкомпонентов, и он должен быть частью ответа, потому что это следующий шаг, который должен сделать каждый.
Мурмель

137

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


4
Спасибо! Работает без нареканий! Принятый ответ был бы странным, так как мой проект далек от достижения предела в 65 КБ (для которого потребовался бы мультидекс).
Луи CAD

4
Да, уборка была способом пойти. AS 1.4
Фелипе Калдас

Если у вас есть библиотечные модули, очистите все модули в проекте, чтобы он работал. Очистка только отдельных модулей не работает для меня. Чистый ВЕСЬ проект.
Ах

Может кто-нибудь сказать мне, как я могу очистить проект? Я пробовал много "комбинаций" и ничего не работает. Я вижу, что все говорят "чисто", но не знаю как. Спасибо.
Альберто Рубио

@AlbertoRubio, в Build> Clean Project на панели инструментов AS.
Chantell Osejo

23

Эта ошибка стала появляться для меня, когда я добавил несколько новых методов в свой проект. Я знал, что я не достиг предела в 65k, и не хотел включать поддержку multiDex для моего проекта, если бы мог помочь.

Я решил это путем увеличения памяти, доступной для :app:transformClassesForDexForDebugзадачи. Я сделал это, указав javaMaxHeapSize в gradle.build.

gradle.build

android {
    ...
    dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
    }
}

Я попробовал это после того, как не имел успеха с другими общими решениями этой проблемы:

  • Запуск проекта clean
  • Вручную вычеркивания /app/buildи /buildкаталоги из моего проекта
  • Отмена использования Gradle Cache и перезапуск Android Studio

ошибка

Ошибка: не удалось выполнить задачу> ': app: transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: обработать «команду» /Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contents / Home / bin / java '' закончили с ненулевым значением выхода 1

Примечание: увеличение памяти доступной для задачи DEX может привести к снижению производительности в системах с более низкой памятью - связь .


Это сработало для меня, просто указать максимальный размер кучи, чтобы решить проблему, спасибо, Морис
Zeyad Assem

8

Я также сталкивался с подобной проблемой в Android Studio 1.5.1 и gradle 1.5.0. Мне просто нужно удалить ненужные библиотеки из зависимостей, которые могут автоматически добавляться в файл build.gradle моего приложения. Один из них: compile 'com.google.android.gms: play-services: 8.4.0'. Так что для передового опыта попробуйте включить только определенную библиотеку игровых сервисов, например, для рекламы.

dependencies {
    compile 'com.google.android.gms:play-services-ads:8.4.0'
}

Хотя

defaultConfig {
    multiDexEnabled true
}

это также решит проблему, но предоставляет множество Notes в консоли gradle, что затрудняет поиск других реальных проблем во время сборки


Сузить использование Google API для Play-Services-Maps. Вот официальная разбивка Google различных компонентов в API игровых сервисов: developers.google.com/android/guides/…
jperl

4

вы можете увидеть документацию по Android

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

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

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

manifest.xml

<?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>

3

Я использую AS 1.5.1 и столкнулся с той же проблемой. Но просто очистить проект просто не буду, поэтому я попробовал кое-что.

  • чистый проект
  • перезагрузить AS
  • Синхронизировать проект

Это работало со мной, поэтому я надеюсь, что это поможет.


3
Это было бы бессмысленно для проектов, которые превысили предел метода Dex 64 КБ.
Игорь Ганапольский


2

В моем случае возникла исключительная ситуация, потому что все расширения службы Google Play не имеют ту же версию, как указано ниже.

 compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:8.3.0'

Это сработало, когда я изменил это на

compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:9.8.0'

1
Я не просматривал все ответы и не видел ваши, так что ... я обнаружил, что это был мой случай примерно через час: /
denispyr

2

Я решил это следующим:

Я настроил мультидекс

В build.gradle вам нужно добавить следующий.

android {
...
   defaultConfig {
       ...
       // Enabling multidex support.
       multiDexEnabled true
       ...
   }
   dexOptions {
      incremental true
      maxProcessCount 4 // this is the default value
      javaMaxHeapSize "2g"
   }
...
}
dependencies {
...
   compile 'com.android.support:multidex:1.0.1'
...
}

Добавьте следующий в local.properties

org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

После этого в класс Application вам также необходимо добавить Multidex.

 public class MyApplication extends MultiDexApplication {

   @Override
   public void onCreate() {
       super.onCreate();
       //mas codigo
   }

   @Override
   protected void attachBaseContext(Context base) {
       super.attachBaseContext(base);
       MultiDex.install(this);
   }
}

Не забудьте добавить код строки в Manifest.xml

<application
    ...
    android:name=".MyApplication"
    ...
/>

Вот именно этого было достаточно для устранения ошибки: «Ошибка выполнения задачи»: app: transformClassesWithDexForDebug. Проверьте очень хорошо в build.gradle с javaMaxHeapSize "2g" и local.properties org.gradle.jvmargs = -Xmx2048m имеют 2 гигабайта.


2
Пожалуйста, пишите только на английском языке. Это выглядит как хороший ответ, было бы стыдно удалить его, потому что это не на английском языке.
Тунаки

1

У меня была такая же проблема, когда я откатывался на старую версию через git, и эта версия имела предыдущую библиотеку .jar одного стороннего API, и по какой-то причине оказалось, что оба jar одного и того же sdk, просто разные версии были в папке / libs ,


1

Сначала удалите промежуточные файлы СВОЙ ПРИЛОЖЕНИЕ ПРИЛОЖЕНИЯ \ app \ build \ промежуточный пункт ИЛИ Очистите ваш проект, а затем пересоберите.

Thent добавить

multiDexEnabled true

т.е.

defaultConfig {
        multiDexEnabled true
}

Это работа для меня


1

Я решил эту проблему путем изменения, чтобы использовать последние buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}

1

Полезный ответ, если все вышеперечисленное не сработало для вас.

Перейдите к файлу Gradle вашего приложения,

Убедитесь, что все версии зависимостей упоминаются с правильным кодом версии, а не с относительным значением, например (com.example.demo: +)

Предыдущая - реализация 'com.google.api-client: google-api-client-android: +'

После - реализация 'com.google.api-client: google-api-client-android: 1.30.0'


0

Если вы используете последнюю версию gradle classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', то есть попробуйте обновить последнюю версию репозитория поддержки из менеджера SDK и пересобрать весь проект.


0

Если вам нужно добавить эту ссылку для плагина cordova, добавьте следующую строку в ваш файл plugin.xml.

<framework src="com.android.support:support-v4:+" />

0

Если разные зависимости имеют один и тот же jar-файл, это также приводит к ошибке сборки.

Например:

compile('com.a.b:library1');
compile('com.c.d:library2');

Если «library1» и «library2» имеют одинаковый jar-файл xxx.jar, это приведет к такой ошибке.



0

Я изменил пару PNG и номер сборки в Gradle, и теперь я получаю это. Никакое количество очистки и перезапуска не помогло. Отключение Instant Run исправило это для меня. YMMV


0

У меня была та же опция, и как только я отключил мгновенный запуск, он работал нормально на моем устройстве API16, но на устройстве API24 он работал нормально с мгновенным запуском.

Надеюсь, что это помогает кому-то, имеющему ту же проблему


0

Просто зайдите в Build - Edit Build Types - вкладка Properties - Build Type Version и понизьте ее до версии 23.0.1. Нажмите ОК Это работает для Android Studio 1.5. Это сработало для меня.


0

ответ на запись в gradle положить defaultConfig {multiDexEnabled true}, затем имя приложения в манифесте android: name = "android.support.multidex.MultiDexApplication", если этот ответ полезен кому-то одному


0

этот код решил проблему

defaultConfig {
        multiDexEnabled true
}

Для простоты реализации входа в Google зайдите в систему: войдите в систему в Android

Также попробуйте

dexOptions {
        javaMaxHeapSize "4g" 
    }

Также сохраняйте один и тот же номер версии для разных сервисов.


0

Я решил эту проблему, добавив: В build.gradle:

defaultConfig {
    multiDexEnabled true
}

в local.properties,

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

упомянуть зависимость:

compile 'com.android.support:multidex:1.0.1'

Очистить и восстановить.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.