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:.

Philipp Buhaievskiy
źródło
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.

Klawisz skrótu
źródło
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
Masum Billah
źródło
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

chichilatte
źródło
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") 
    }
Moumit
źródło
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.

Hiren
źródło
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

Ustaw ścieżkę DistributionUrl w plikach gradle-wrapper-properties jako:

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

Gautam Dev
źródło
mój gradle miał tę linię .. .distributionUrl = https \: //services.gradle.org/distributions/gradle-4.8.1-bin.zip Zmieniłem to na i działało. distributionUrl = services.gradle.org/distributions/gradle-4.10.2-all.zip
Aaron Medvick
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 '

Avid Programmer
źródło
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:

NerioLorona
źródło
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.

Philipp Buhaievskiy
źródło
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.

Nawab Singh Koli
źródło
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"
priyanka.b
źródło
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 
}
verunar
źródło
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.

Omar D.
źródło
0

Naprawiono tego rodzaju błąd po migracji do AndroidX

  • Przejdź do Refactor ---> Migrate to AndroidX
damith alahakoon
źródło
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.

Sajid Javed
źródło