W tej kompilacji użyto przestarzałych funkcji Gradle, co czyni ją niezgodną z Gradle 5.0


94

Mam stopień AWARIA:

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

Opis przypadku:

  • Dołączone do kodu źródłowego projektu następne biblioteki:

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"
  • Zaktualizowano gradle-wrapper.properties

    distributionUrl = https .... gradle- 4.4-all .zip to 4.7-all

  • po tym wszystkim zbudowano sukces

  • stworzyli testy

    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
      class TestClass {
    
      @Test
      internal fun testName() {
        Assert.assertEquals(2, 1 + 1)
      }
    }
    
  • uruchomił test i otrzymał komunikat FAILURE. wprowadź opis obrazu tutaj

  • uruchomił kompilację Gradle z argumentem wiersza poleceń, ./gradlew --warning-mode=allaby zobaczyć, jakie dokładnie są przestarzałe funkcje. wprowadź opis obrazu tutaj

W rezultacie nie mogłem zbudować aplikacji i otrzymałem komunikat FAILURE:.


1
To nie jest porażka. Aplikacja nadal się kompiluje, prawda?
EpicPandaForce,

1
Aplikacja jest kompilowana z tym samym komunikatem o błędzie. :-(
Philipp Buhaievskiy,

2
To nie jest porażka. Byłoby niepowodzeniem, gdyby aplikacja się nie skompilowała. To w najlepszym przypadku ostrzeżenie .
EpicPandaForce

@ EpicPandaForce niestety JEST to komunikat o błędzie, jak wspomniałem. Nie chodzi o to, jak zinterpretować przesłanie, ale w każdym razie moje uznanie dla twojego wpływu.
Philipp Buhaievskiy

Odpowiedzi:


74

Uruchom kompilację Gradle z argumentem wiersza poleceń, --warning-mode=allaby zobaczyć, jakie dokładnie są przestarzałe funkcje.

Zawiera szczegółowy opis znalezionych problemów z łączami do dokumentów Gradle, w których można znaleźć instrukcje naprawiania kompilacji.

Dodając --stacktracedo tego, będziesz mógł również wskazać, skąd pochodzi ostrzeżenie, jeśli jest wyzwalane przez nieaktualny kod w jednej z wtyczek, a nie przez skrypt kompilacji.


Zaktualizowałem opis problemu, korzystając z tej sugestii.
Philipp Buhaievskiy

13
Podczas biegu react-native run-android --warning-mode alldostajęerror: unknown option --warning-mode'
Yokhen

13
Spróbuj biegać gradle build --warning-mode=all
Jordan Daniels

18

Spróbuj tego

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

Dzięki, czy możesz proszę wyjaśnić, dlaczego to ./gradlew: app: bundleRelease działa, a to ./gradlew bundleRelease nie.
Atikur Rahman Sabuj

perfecct pracował dla mnie przy moim projekcie cordova-9.0: D
minigeek

2
@AtikurRahmanSabuj To zależy od tego, jak został napisany plik ./gradlew. Domyślnym modułem w systemie Android jest „aplikacja”, a aplikacja na Androida może mieć wiele modułów. Również ./gradlew powinien działać tylko po czyszczeniu. Aby zobaczyć wszystkie zadania w gradlew, wykonaj "./gradlew zadania", które pokażą ci dostępne zadania w gradlew.
Amr Ashraf

W przypadku Apache Cordova i Androida 9 błąd można rozwiązać, włączając AndroidX. Aby włączyć, zobacz: cordova.apache.org/announcements/2020/06/29/…
FC

10

Otrzymałem ten błąd. Okazuje się, że stało się to tylko wtedy, gdy całkowicie wyczyściłem pamięci podręczne RN (dość skomplikowany proces), a następnie utworzyłem kompilację wydania.

Jeśli wyczyściłem pamięci podręczne, utworzyłem kompilację debugowania, a następnie kompilację wydania, wszystko działało. Trochę niepokojące, ale działa.

Uwaga: moje polecenie czyszczenia to ...

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

w moim przypadku zaktualizowałem build.gradleplik i stworzyłem classpathnajnowszą wersję od 3.5.2do3.6.3

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

3

Zaktualizuj zależności innych firm. na przykład zaktualizowałem zależność od implementation 'com.github.ybq:Android-SpinKit:1.1.0' do implementation 'com.github.ybq:Android-SpinKit:1.2.0'. iw moim przypadku problem został rozwiązany.


postępuj zgodnie z sugestią skrótu, aby uzyskać dokładny szczegółowy opis
Hiren

to był błąd i uaktualniam wersję Gradle i próbuję każdego możliwego kroku. :(
Anshul1507


2

Ważne - odpowiedź działa tylko dla terminala REACT-NATIVE VS CODE

W kodzie VisualStudio musisz działać jak poniżej, to ostrzeżenie zostanie pominięte.

react-native run-android warning-mode = all

Jeśli uruchomisz poniżej, pojawi się błąd w terminalu Podczas uruchamiania Reagowanie natywnego run-android --warning-mode all I get error: unknown option --warning-mode '


2

U mnie to działa w tym numerze w projekcie react-native:

W tej kompilacji użyto przestarzałych funkcji Gradle, co czyni ją niezgodną z Gradle 7.0.

244 zadania do wykonania: 2 wykonane, 242 aktualne D8: Nie można zmieścić żądanych klas w jednym pliku dex (# pola: 67296> 65536) com.android.builder.dexing.DexArchiveMergerException: Błąd podczas scalania archiwów dex: liczba odwołań do metod w pliku .dex nie może przekraczać 64 KB. Dowiedz się, jak rozwiązać ten problem na https://developer.android.com/tools/building/multidex.html ....

Ja to zrobiłem:


dzięki za udostępnienie. prawie spędził na nim 50 minut. po prostu odinstalowanie aplikacji z urządzenia wykonało pracę za mnie.
Anirudh babbar

1

Ostatecznie zdecydował się obniżyć junit 5 do junit 4 i przebudować środowisko testowe.


Jak to zrobiłeś?
Pratik Butani

Pratik pamiętaj, na razie, sześć miesięcy później, przypuszczam, że okoliczności wokół tej kwestii uległy zmianie. Radziłbym zbadać od podstaw, czy JUnit 5 jest wygodny w użyciu jako przyrząd testowy.
Philipp Buhaievskiy

1

Rozwiązanie problemu: w tej kompilacji użyto przestarzałych funkcji gradle, co powoduje, że jest ona niezgodna z programem Gradle 6.0. android studio To dostarczone rozwiązanie zadziałało dla mnie.

Najpierw zmień ścieżkę klasy w zależnościach build.gradle projektu Od: classpath 'com.android.tools.build:gradle:3.3.1' Do: classpath 'com.android.tools.build:gradle:3.6.1'

Następnie wprowadź zmiany w pliku gradle-wrapper.properties, plik ten istnieje w folderze gradle> wrapper projektu Od: distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip Do: distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Następnie zsynchronizuj swój gradle.


1

Poniższe rozwiązanie pomogło mi, ponieważ otrzymałem to samo ostrzeżenie. W pliku ocen na poziomie projektu spróbuj zmienić wersję oceny w ścieżce klas

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

Udało mi się to po wypróbowaniu wszystkich innych procesów tutaj. To ratuje mi dzień. thx
Shapon Pal

1

W moim przypadku dodanie multiDexEnabled true w pliku Android / build / build.gradle skompilowało pliki.

Postaram się usunąć to w przyszłości, tak jak w dokumentacji jest napisane: „Przed skonfigurowaniem aplikacji w celu umożliwienia korzystania z 64 KB lub więcej odwołań do metod, należy podjąć kroki w celu zmniejszenia całkowitej liczby odwołań wywoływanych przez kod aplikacji, w tym metod zdefiniowane przez kod aplikacji lub dołączone biblioteki ”.

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

0

W projekcie SpringBoot używającym IntelliJ i Gradle otrzymałem ostrzeżenie „W tej kompilacji zostały użyte przestarzałe funkcje Gradle, co powoduje, że jest ona niezgodna z Gradle 5.0” podczas uruchamiania testu integracji. To, co rozwiązało problem, to: - Przejście do: Plik> Ustawienia> Kompilacja, Wykonanie, Wdrożenie - Wybranie opcji „Kompiluj i uruchom przy użyciu”: Intellij IDEA (zamiast „Gradle”) - To samo dotyczy „Uruchom testy przy użyciu” To nie wyjaśnia dlaczego Gradle wyświetla ostrzeżenie, ale to pozwoliło mi przeprowadzić test i postęp w mojej pracy.


0

Naprawiono tego rodzaju błąd po migracji do AndroidX

  • Przejdź do Refactor ---> Migrate to AndroidX

0

Jeśli używasz natywnego reagowania, wypróbuj najpierw poniższe polecenia przed uruchomieniem projektu:

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

Teraz ponownie uruchom projekt. Mam nadzieję, że to zadziała.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.