Хобрук: Ваш путь к мастерству в программировании

Ошибка: Gradle: не удалось выполнить задачу «: app: preDexDebug»

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

введите здесь описание изображения

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


  • Картинка не видна. 24.05.2014
  • J2SE 8 = 52 (0x34 hex), поэтому я думаю, что есть код Java 8. Можете ли вы убедиться, что используете java 7 и/или нацелены на java 7? 25.05.2014

Ответы:


1

Мы сталкивались с этой проблемой в прошлом, когда наш проект компилировался с использованием версии Java, отличной от той, которая использовалась для компиляции библиотеки. магический номер просто используется для идентифицировать файлы классов, так что это не проблема. Проблема заключается в версии Java (0034.0000 == Java 8).

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

Android-библиотеки

для библиотек Android добавьте этот код в объект расширения «android»:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
    ...
}

Java-библиотеки

для библиотек Java добавьте этот код на «верхний уровень»:

apply plugin: 'java'

version '1.8.1'
group   'com.yourcompany.package'

sourceCompatibility = JavaVersion.VERSION_1_6   //these two lines
targetCompatibility = JavaVersion.VERSION_1_6   //are the only ones that matter

ПРИМЕЧАНИЕ: последние две строки являются единственными, которые имеют значение, я добавил остальные, чтобы показать, где эти строки относятся к остальной части вашего файла сборки gradle.

02.06.2014

2

Для нас это было вызвано версией инструментов сборки Android SDK. Есть проблема на v23.x, но не на v22.x. Вам нужно удалить v23 для Cordova, чтобы выбрать v22.

Возможно, это симптом, а не причина, но это может расстроить кого-то в той же ситуации.

03.05.2016
  • Возможно, тогда все было иначе 03.05.2016

  • 3

    Хотя ваша проблема кажется исправленной, я столкнулся с аналогичной ошибкой (при сборке образцов с сайта developer.android.com). Если это полезно для других, я смог решить эту проблему, установив для JAVA_HOME соответствующее значение. В моем случае это было:

    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
    
    23.04.2015

    4

    добавление:

    sourceCompatibility = JavaVersion.VERSION_X_X
    targetCompatibility = JavaVersion.VERSION_X_X
    

    в файле градиента проекта Android, и файл градиента библиотеки Java работал у меня.

    Извините, я бы +1, но у меня недостаточно высокая репутация

    18.12.2015
    Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.