В этой сборке использовались устаревшие функции Gradle, что делало ее несовместимой с Gradle 5.0

У меня ОТКАЗ gradle:

..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0."

Описание кейса:

  • К кодовой базе проекта прилагаются следующие библиотеки:

Приложение / build.gradle

    //(Required) Writing and executing Unit Tests on the JUnit Platform 
testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0"
    // (Optional) If you need "Parameterized Tests"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.2.0"
    // (Optional) If you also have JUnit 4-based tests
testImplementation "junit:junit:4.12"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.2.0"

testImplementation "io.mockk:mockk:1.8.5"
  • Обновил gradle-wrapper.properties

    distributionUrl = https .... gradle-4.4-все.zip в 4.7-все

  • после всего этого градиент был построен успехом

  • создал тестовую программу

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • запустил тест и получил сообщение FAILURE. В этой сборке использовались устаревшие функции Gradle, что делало ее несовместимой с Gradle 5.0

  • запустил сборку Gradle с аргументом командной строки ./gradlew --warning-mode=all, чтобы узнать, какие именно устаревшие функции. В этой сборке использовались устаревшие функции Gradle, что делало ее несовместимой с Gradle 5.0

В результате я не смог создать приложение и получил сообщение FAILURE :.

Это не неудача. Приложение все еще компилируется, не так ли?

EpicPandaForce 31.07.2018 12:01

Приложение компилируется с тем же сообщением об ошибке. :-(

Philipp Buhaievskiy 31.07.2018 12:21

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

EpicPandaForce 31.07.2018 12:35

@ EpicPandaForce, к сожалению, это сообщение об ошибке, как я уже упоминал. Вопрос не в том, как интерпретировать сообщение, но в любом случае моя признательность за ваше влияние.

Philipp Buhaievskiy 31.07.2018 13:23
137
4
291 785
21
Перейти к ответу Данный вопрос помечен как решенный

Ответы 21

Ответ принят как подходящий

Запустите сборку Gradle с аргументом командной строки --warning-mode=all, чтобы узнать, какие именно устаревшие функции.

Он предоставит вам подробное описание обнаруженных проблем со ссылками на документы Gradle с инструкциями по исправлению вашей сборки.

Добавив к этому --stacktrace, вы также сможете точно определить, откуда исходит предупреждение, если оно вызвано устаревшим кодом в одном из плагинов, а не скриптом сборки.

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

Philipp Buhaievskiy 01.08.2018 16:23

При запуске react-native run-android --warning-mode all получаю error: unknown option --warning-mode'

Yokhen 13.05.2019 19:03

Попробуйте запустить gradle build --warning-mode=all

Jordan Daniels 27.05.2019 01:12

Как это правильный ответ ?!

arled 09.03.2021 21:42

@Led, предупреждения об устаревании могут возникнуть по многим причинам, от устаревшей функции, используемой в сценарии сборки, до устаревших сторонних плагинов Gradle или ошибочного вызова устаревшего API. Этот ответ предлагает способ узнать, что именно вызывает предупреждения об устаревании, поэтому, узнав об этом, вы можете искать решения более конкретной проблемы.

hotkey 10.03.2021 11:09

В конце концов решил понизить версию junit 5 до junit 4 и перестроить среду тестирования.

Как ты это сделал?

Pratik Butani 07.02.2019 10:47

Имейте в виду, Pratik, сейчас, шесть месяцев спустя, я полагаю, что обстоятельства вокруг этого вопроса изменились. Я бы посоветовал вам разобраться с нуля, удобно ли использовать JUnit 5 в качестве тестового инструмента.

Philipp Buhaievskiy 08.02.2019 11:10

Задайте путь distributionUrl в файлах свойств gradle-wrapper как:

distributionUrl = https: //services.gradle.org/distributions/gradle-4.10.2-all.zip

у моего gradle была эта строка .. .distributionUrl = https \: //services.gradle.org/distributions/‌ gradle-4.8.1-bin.zip Изменил на, и это сработало. distributionUrl = services.gradle.org/distributions/gradle-4.1‌ 0.2-all.zip

Aaron Medvick 24.02.2020 01:46

Обновите свои сторонние зависимости. Например Я обновил зависимость от implementation 'com.github.ybq:Android-SpinKit:1.1.0' в implementation 'com.github.ybq:Android-SpinKit:1.2.0'. и в моем случае проблема решена.

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

Hiren 09.03.2019 19:29

это была ошибка, и я обновляю версию Gradle и пробую все возможные шаги. :(

Anshul1507 16.01.2020 08:19

Я получал эту ошибку. Оказывается, это произошло только тогда, когда я полностью очистил кеши RN (довольно сложный процесс), а затем создал сборку релиза.

Если я очистил кеши, создал отладочную сборку, а затем сборку выпуска, все заработало. Немного беспокоит, но работает.

Примечание: Моя чистая команда ...

rm -r android/build ; rm -r android/app/src/release/res ; rm -r android/app/build/intermediates ; watchman watch-del-all ; rm -rf $TMPDIR/react-* ; npm start -- --reset-cache

Правильный ответ...

Brandon Aguilar 18.06.2021 11:31

Это ПРАВИЛЬНЫЙ ответ после ЧАСОВ поисков и попыток.

David Jones 08.07.2021 08:06

Важно - Ответ работает только для терминала REACT-NATIVE VS CODE

В коде VisualStudio вы должны запустить, как показано ниже, тогда это предупреждение будет опущено.

реагировать-родной run-android-предупреждения-режим = все

If you run below then you will get the error in terminal When running react-native run-android --warning-mode all I get error: unknown option --warning-mode'

Решение проблемы: В этой сборке использовались устаревшие функции gradle, что делало ее несовместимой с gradle 6.0. студия Android Это предоставленное решение сработало для меня.

Сначала измените путь к классам в зависимостях build.gradle вашего проекта Откуда: classpath 'com.android.tools.build:gradle:3.3.1' Кому: classpath 'com.android.tools.build:gradle:3.6.1'

Затем внесите изменения в файл gradle-wrapper.properties, этот файл существует в папке проекта gradle> wrapper. Откуда: distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip Кому: distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Затем синхронизируйте свой градиент.

Попробуй это

cd android && ./gradlew clean && ./gradlew :app:bundleRelease

Спасибо, не могли бы вы объяснить, почему этот ./gradlew: app: bundleRelease работает, а этот ./gradlew bundleRelease - нет.

Atikur Rahman Sabuj 19.05.2020 11:24

отлично сработал для меня в моем проекте cordova-9.0: D

minigeek 02.09.2020 08:35

@AtikurRahmanSabuj Это зависит от того, как был написан файл ./gradlew. Поскольку модулем по умолчанию в Android является «приложение», а приложение Android может иметь несколько модулей. Также ./gradlew должен работать только после очистки. Чтобы увидеть все задачи в gradlew, выполните "./gradlew tasks", который сообщит вам о доступных задачах в gradlew.

Amr Ashraf 23.11.2020 13:41

Для Apache Cordova и Android 9 ошибку можно устранить, включив AndroidX. Чтобы включить, см .: cordova.apache.org/announcements/2020/06/29/…

F C 31.12.2020 06:20

В проекте SpringBoot с использованием IntelliJ и Gradle я получил предупреждение «В этой сборке использовались устаревшие функции Gradle, что делает ее несовместимой с Gradle 5.0» при запуске моего интеграционного теста. Что решило проблему: - Переход к: Файл> Настройки> Сборка, выполнение, развертывание - Выбор для «Сборка и запуск с использованием»: Intellij IDEA (вместо «Gradle») - То же самое для «Запуск тестов с использованием» Это не объясняло, почему Gradle отображает предупреждение, но это позволило мне выполнить тест и продвинуться в моей работе.

в моем случае я обновил файл build.gradle и сделал classpath до последней версии с 3.5.2 на 3.6.3

dependencies {
        classpath("com.android.tools.build:gradle:3.6.3") 
    }

Исправлена ​​такая ошибка после перейти на AndroidX

  • Перейти к Рефакторинг ---> Переход на AndroidX

Следующее решение помогло мне, так как я также получал такое же предупреждение. В файле gradle уровня проекта попробуйте изменить версию gradle в пути к классам

classpath "com.android.tools.build:gradle:3.6.0" to
classpath "com.android.tools.build:gradle:4.0.1"

Это сработало для меня после того, как я попробовал все остальные процессы здесь. Это спасает мне день. Спасибо

Shapon Pal 11.01.2021 18:13

Боролся с этой ошибкой 2 часа. Этот ответ сэкономил мне много времени.

Justice Bringer 22.03.2021 10:55

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

  1. npm install --save-dev jetifier
  2. npx jetify

Теперь снова запустите свой проект.

Это работает для меня в этом вопросе в проекте react-native:

В этой сборке использовались устаревшие функции Gradle, что делало ее несовместимой с Gradle 7.0.

244 действенных задачи: 2 выполнены, 242 актуальны D8: не удается разместить запрошенные классы в одном файле dex (# поля: 67296> 65536) com.android.builder.dexing.DexArchiveMergerException: ошибка при слиянии архивов dex: Количество ссылок на методы в файле .dex не может превышать 64 КБ. Узнайте, как решить эту проблему, на https://developer.android.com/tools/building/multidex.html ....

Я сделал это:

Спасибо, что поделился. почти 50 минут потратил на это. просто удаление приложения с устройства помогло мне.

Anirudh babbar 02.01.2021 07:34

В моем случае добавление multiDexEnabled true в файл Android / build / build.gradle скомпилировал файлы.

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

defaultConfig {
  applicationId "com.peoplesenergyapp"
  minSdkVersion rootProject.ext.minSdkVersion
  targetSdkVersion rootProject.ext.targetSdkVersion
  versionCode 1
  versionName "1.0"
  multiDexEnabled true // <-add this 
}

Удалите старое приложение с устройства / эмулятора. Это сработало для меня

Я использую response-native, и это работает для меня:

  1. в корне проектов cd android и gradlew clean
  2. открыть диспетчер задач в windows
  3. на вкладке 'Details' нажмите endtask на обоих процессах java.exe

Короче > Task :app:installDebug FAILED Исправлено kiling java.exe prossess

это из-за несовместимости.

пожалуйста, обновите classpath("com.android.tools.build:gradle:4.0.1") в файле build.gradle в папке android.

В моем случае сработал приведенный ниже процесс - Сначала проверьте версию Gradle:

cd android
./gradlew -v

В моем случае это было 6.5

Перейдите в https://developer.android.com/studio/releases/gradle-plugin, и вы получите версию плагина для своей версии Gradle. Для версии Gradle 6.5 версия плагина - 4.1.0.

Затем перейдите на app/build.gradle и поменяйте classpath 'com.android.tools.build:gradle:<plugin_version>

Я обнаружил, что мое дисковое пространство меньше 4 ГБ и не могу получить репозиторий Gradle lib тогда покажи

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

просто удалите tmp и ненужные файлы, освободите место, затем попробуйте собрать и решить проблему

В моем случае удаление всей папки android из базового каталога и разрешение ему перестроить все это на eas build устранило эту ошибку для меня :)

Другие вопросы по теме