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

У меня есть отказ в Gradle:

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

Описание случая:

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

APP/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-all.zip to 4.7-all

  • после того, как весь этот gradle был построен успех

  • создал тестовый кальс

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • запустил тест и получил сообщение FAILURE. enter image description here

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Установите путь distributionUrl в файлах свойств gradle-wrapper как:

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

response-native run-android warning-mode = все

Если вы запустите ниже, вы получите ошибку в терминале При запуске реакции-нативного запуска-android --warning-mode все я получаю сообщение об ошибке: неизвестная опция --warning-mode '

Ответ 7

Для меня работало обновление Android Studio и обновление переменных среды JAVA_HOME и ANDROID_HOME. Я считаю, что это было вызвано тем, что я обновил версию Java (через программу обновления), но не обновил JDK.