У цій збірці використовувались застарілі функції Gradle, що робило її несумісною з Gradle 5.0


92

У мене є КОМПЛЕКТ:

..."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 до 4.7-all

  • адже все це градле було побудовано успішно

  • створив тест-кал

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • запустив тест і отримав повідомлення FAILURE. введіть тут опис зображення

  • запустив збірку Gradle з аргументом командного рядка, ./gradlew --warning-mode=allщоб побачити, які саме застарілі функції. введіть тут опис зображення

В результаті я не зміг створити програму, і я отримав повідомлення FAILURE:.


1
Це не провал. Додаток все ще компілюється, ні?
EpicPandaForce

1
Додаток компілюється з тим самим повідомленням про помилку. :-(
Філіп Бугаєвський

2
Це не провал. Було б невдало, якби програма не скомпілювалась. Це в кращому випадку попередження .
EpicPandaForce

@ EpicPandaForce, на жаль, Є повідомлення про помилку, як я вже згадував. Питання не в тому, як інтерпретувати повідомлення, але в будь-якому випадку я вдячний за ваш вплив.
Філіп Бугаєвський

Відповіді:


73

Запустіть збірку Gradle з аргументом командного рядка --warning-mode=all щоб побачити, які саме застарілі функції.

Він дасть вам детальний опис знайдених проблем із посиланнями на документи Gradle, щоб отримати інструкції щодо виправлення збірки.

Додавши --stacktraceдо цього, ви також зможете визначити, звідки надходить попередження, якщо воно викликане застарілим кодом одного з плагінів, а не сценарієм збірки.


Я оновив опис проблеми, використовуючи цю пропозицію.
Філіп Бугаєвський,

13
Під час бігу react-native run-android --warning-mode allя отримуюerror: unknown option --warning-mode'
Йохен

13
Спробуй бігтиgradle build --warning-mode=all
Джордан Деніелс

18

Спробуйте це

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

Дякую, можете ви plesae пояснити, чому це ./gradlew: app: bundleRelease працює, а це ./gradlew bundleRelease ні.
Атікур Рахман Сабудж

perfecct працював у мене над моїм проектом cordova-9.0: D
minigeek 02

2
@AtikurRahmanSabuj Це залежить від того, як був написаний файл ./gradlew. Оскільки модулем за замовчуванням в android є "додаток", а додаток android може мати кілька модулів. Також ./gradlew повинен працювати лише після чищення. Щоб побачити всі завдання в gradlew, виконайте "./gradlew tasks", які покажуть вам доступні завдання в gradlew.
Амр Ашраф,

Для Apache Cordova та Android 9 помилка може бути вирішена ввімкненням AndroidX. Щоб увімкнути, див .: cordova.apache.org/announcements/2020/06/29/…
FC

10

Я отримував цю помилку. Виявляється, це сталося лише тоді, коли я повністю очистив кеші 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


7

в моєму випадку я оновив build.gradleфайл і зробив classpathостанню версію з 3.5.2до3.6.3

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

3

Оновіть свої незалежні залежності. наприклад, я оновив залежність від implementation 'com.github.ybq:Android-SpinKit:1.1.0' до implementation 'com.github.ybq:Android-SpinKit:1.2.0'. і в моєму випадку питання вирішено.


слідуйте пропозиції гарячої клавіші для точного детального опису
Hiren

це була помилка, і я оновлюю версію gradle і пробую всі можливі кроки. :(
Anshul1507

2

Встановіть шлях 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.10.2-all.zip
Аарон Медвік

2

Важливо - відповідь працює лише для терміналу REACT-NATIVE VS CODE

У коді VisualStudio вам потрібно запустити, як показано нижче, тоді це попередження буде пропущено.

реакція-рідний режим запуску-android-попередження = все

Якщо ви запустите нижче, ви отримаєте помилку в терміналі. Під час запуску реагувати-native run-android --warning-mode все я отримую помилку: невідомий варіант --warning-mode '


2

Мені це вдається у цьому випуску в проекті 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

1

Нарешті вирішили знизити рівень сполучення 5 до сполучення 4 і відновити середовище тестування.


Як ти це зробив?
Пратік Бутані

Пратик майте на увазі, наразі, через шість місяців, я вважаю, що обставини навколо цього питання змінилися. Я б порадив вам дослідити з нуля, якщо JUnit 5 зручно використовувати як тестовий інструмент.
Філіп Бугаєвський

1

Рішення проблеми: у цій збірці використовувались застарілі функції gradle, що робило її несумісною з gradle 6.0. android studio Це запропоноване рішення працювало для мене.

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

Потім внесіть зміни у файл gradle-wrapper.properties, який цей файл існує в папці gradle> wrapper проекту: From: distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip To: distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Потім синхронізуйте ваш gradle.


0

У проекті SpringBoot, що використовує IntelliJ та Gradle, я отримав попередження "У цій збірці використані застарілі функції Gradle, що робить його несумісним із Gradle 5.0" під час запуску мого тесту інтеграції. Що вирішило проблему, було: - Перехід до: Файл> Налаштування> Збірка, виконання, розгортання - Вибір для "Створення та запуск за допомогою": Intellij IDEA (замість "Gradle") - Те саме для "Запуск тестів за допомогою" Це не пояснило чому Gradle відображає попередження, але це дозволить мені провести тест і прогресувати в своїй роботі.


0

Виправлена ​​помилка такого типу після переходу на AndroidX

  • Перейдіть до Refactor ---> Перенести на AndroidX

0

Наступне рішення допомогло мені, оскільки я також отримував те саме попередження. У файлі gradle на рівні проекту спробуйте змінити версію gradle у шляху до класу

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

0

Якщо ви використовуєте response-native, спробуйте спочатку навести наведені нижче команди перед запуском проекту:

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

Тепер запустіть свій проект ще раз. Сподіваюся, це спрацює.


0

У моєму випадку додавання multiDexEnabled true у файл Android / build / build.gradle скомпілював файли.

Я буду розглядати можливість видалення цього в майбутньому, оскільки в документації сказано: `` Перш ніж налаштовувати свою програму, щоб дозволити використання 64K або більше посилань на методи, вам слід вжити заходів для зменшення загальної кількості посилань, викликаних вашим кодом програми, включаючи методи визначається кодом вашої програми або включеними бібліотеками. '

defaultConfig {
  applicationId "com.peoplesenergyapp"
  minSdkVersion rootProject.ext.minSdkVersion
  targetSdkVersion rootProject.ext.targetSdkVersion
  versionCode 1
  versionName "1.0"
  multiDexEnabled true // <-add this 
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.