Jak sprawdzić, czy zależność stopni ma nową wersję

232

W Android Studio, gdy używam +numeru wersji (jak com.android.support:recyclerview-v7:21.+), pojawia się ostrzeżenie „Unikaj używania + w numerach wersji”. Kiedy używam określonego numeru wersji, nie zawsze mogę używać najnowszej wersji. Mam wiele zależności w moim projekcie. Jak sprawdzić, czy zależność ma nowszą wersję? Czy istnieje wtyczka Android Studio - lub coś w tym rodzaju - która powiadamia mnie o pojawieniu się nowszej wersji zależności?

Edycja: Android studio wyróżnia przestarzałe biblioteki wsparcia Androida i usługi Google Play. Ale to nie jest dostępne dla innych bibliotek niestandardowych.

wprowadź opis zdjęcia tutaj

osrl
źródło
Dla programistów, którzy aktualizują bibliotekę, zobacz: Jak zaktualizować bibliotekę do nowej wersji w Bintray?
Suragch,
2
Co najmniej w Androidzie 3.0 aktualizacje dla bibliotek niestandardowych wyświetlają teraz to samo powiadomienie, co na obrazie pytania dla biblioteki wsparcia.
Suragch
@ Suragch to nie działa dla niektórych zależności dla mnie w Android Studio 3.0.1
Rémy
Możemy użyć gradleplease.appspot.com do sprawdzenia nowej wersji biblioteki
Alex Kisel

Odpowiedzi:

187

To jest teraz wbudowane w Android Studio jako kontrola Lint. Możesz włączyć to tutaj:

Ustawienia> Edytor> Inspekcje> „Dostępne nowsze wersje bibliotek”

Opis tej kontroli:

Dostępne nowsze wersje bibliotek

Detektor sprawdza w centralnym repozytorium, czy dostępne są nowsze wersje dla zależności używanych w tym projekcie. Jest to podobne do sprawdzania GradleDependency, które sprawdza, czy nowsze wersje są dostępne w narzędziach i bibliotekach zestawu SDK systemu Android, ale działa to z dowolną zależnością MavenCentral i łączy się z biblioteką za każdym razem, co czyni ją bardziej elastyczną, ale także znacznie wolniejszą.

Ze względu na spowolnienie, które może to wprowadzić, zalecam okresowe uruchamianie go ręcznie, zamiast włączania go zawsze. Możesz to zrobić przez:

Analiza> „Uruchom inspekcję według nazwy”

Następnie wyszukaj „Dostępne nowsze wersje bibliotek” i uruchom go w swoim module.

Edycja : powyższe powinno działać od wersji Android Studio 2.3. Jeśli korzystasz ze starej wersji (powinieneś zaktualizować), pomocne mogą być:

Zauważ, że wydaje się, że musisz włączyć inspekcję, aby uruchomić ją ręcznie - więc (od Android Studio 2.0 Beta 2) musisz znaleźć inspekcję w ustawieniach, włączyć ją, a następnie uruchomić według nazwy, a następnie wyłączyć ponownie ( odzyskać poprzednią wydajność).

Adam S.
źródło
4
Nie wiem, czy robię coś źle, ale to nie działało dla mnie
osrl
1
Tak samo dla mnie, królestwo nie jest w MavenCentral. Czy twoja wersja modernizacyjna jest zdefiniowana w ten sposób? Mój jest i też nie mógł go znaleźć def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl
1
ze zdefiniowaną wersją ciąg nie mógł znaleźć. Był w stanie znaleźć com.squareup.okhttp:okhttp:2.7.2. Również w dniu2.0.0-beta4
osrl
2
Pokazuje dostępne aktualizacje w zakładce „Inspekcja”, ale nie wyróżnia go jako ostrzeżenia w build.gradle. Mam jeszcze znaleźć rozwiązanie, które to umożliwi.
Tiago,
3
Musiałem wrócić do tej odpowiedzi, aby zgłosić, że działa TYLKO dla zależności MavenCentral. Oznacza to, że repozytoria z Jitpack lub innych źródeł NIE są automatycznie aktualizowane. Prawidłową metodą uzyskania najnowszej wersji WSZYSTKICH zależności jest ta odpowiedź [ stackoverflow.com/questions/28538824/… (tutaj)
Ray Li
274

AKTUALIZACJA (23.05.18):

Nowsza wersja Android Studio nie wyświetla aktualizacji wersji w oknie dialogowym Struktura projektu. Zamiast tego odpowiedź Adama jest poprawna dla Androida Studio 3+

Analiza> „Uruchom inspekcję według nazwy”

Następnie wyszukaj „ Newer Library Versions Available

POPRZEDNI SPOSÓB:

Od tego momentu Android Studio 2.2nowe Project Structureokno dialogowe pokazuje listę zależności używanych przez aplikację z dostępnymi aktualizacjami z lokalnych i zdalnych repozytoriów.

  • Aktywuj go, przechodząc do Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimentali sprawdzając Use new Project Structure dialog(Dzięki @jessehensold)
  • Następnie otwórz go, przechodząc do File > Project Structure > Messages

wprowadź opis zdjęcia tutaj

W przypadku starszej wersji Android Studio zobacz inne odpowiedzi poniżej.

Quanturium
źródło
1
O edycji; chodziło o android-studio, ponieważ szukałem wtyczki Android Studio. Dzięki za odpowiedź, ale już ją widziałem.
osrl
11
To nie jest już obecne w Android Studio (przy użyciu wersji beta 2).
Gonzalo
8
Musiałem przejść do Preferencje> Kompilacja, wykonanie, wdrożenie> Stopień> Eksperyment i sprawdzić okno dialogowe „Użyj nowej struktury projektu”
jessehensold
1
Musisz przejść do zakładki „Zależności”, aby włączyć przycisk „Zastosuj”. Jakiś błąd?
Mateusz Kaflowski
2
Próbowałem tego z Android Studio 2.3, ale Dependencieszakładka Project Structureokna dialogowego nie znajduje żadnych zależności mojego projektu.
jakub.g
58

Oprócz wbudowanej funkcji Android Studio, dostępna jest ładna wtyczka gradle o nazwie Gradle Versions Plugin, która robi dokładnie to, co chcesz, z korzyścią polegającą na prostym rozszerzaniu stopni, więc NIE wiąże się z żadnym konkretnym IDE, dlatego jest przydatna w każdym projekcie używającym Gradle.

Wtyczka Gradle Versions może tworzyć raporty w czytelnym dla człowieka formacie tekstowym, ale także zrzucić je jako JSON lub XML do automatycznego przetwarzania.

Po dodaniu do pliku oceny standardowe użycie wyglądałoby bardziej jak:

> ./gradlew dependencyUpdates

Spowoduje to wygenerowanie raportu zależności projektu, który wygląda następująco:

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.maksim88:PasswordEditText:v0.9
 - com.android.databinding:adapters:1.3.1
 - com.joanzapata.iconify:android-iconify-entypo:2.2.2
 - com.joanzapata.iconify:android-iconify-fontawesome:2.2.2
 - com.webnetmobile.tools:webnet-log:1.0.3
 - com.nulab-inc:zxcvbn:1.2.2

The following dependencies exceed the version found at the milestone revision level:
 - com.hannesdorfmann.fragmentargs:annotation [4.0.0-SNAPSHOT <- 3.0.2]
 - com.hannesdorfmann.fragmentargs:bundler-parceler [4.0.0-SNAPSHOT <- 3.0.2]
 - com.github.bumptech.glide:glide [3.7.0 <- 3.6.1]
 - com.hannesdorfmann.fragmentargs:processor [4.0.0-SNAPSHOT <- 3.0.2]

The following dependencies have later milestone versions:
 - com.github.PhilJay:MPAndroidChart [v2.2.5 -> v3.0.1]
 - com.android.support:appcompat-v7 [25.1.0 -> 25.1.1]
 - com.jakewharton:butterknife [8.4.0 -> 8.5.1]

Generated report file build/dependencyUpdates\report.txt

Zobacz dokumentację dla obszernych przykładów użycia.


UWAGA: w momencie pisania tej odpowiedzi (2017-01) wersje wyższe niż 0.17.0 generują więcej wyników w formacie tekstowym planu, w tym. adresy URL projektu, dzięki czemu cały wynik jest rozdęty. Jeśli, jak uważam, za bezużyteczne, trzymaj się wersji 0.17.0 lub korzystaj z wersji, w której problem został rozwiązany w jakikolwiek sposób (jeśli taka wersja istnieje);

Marcin Orłowski
źródło
3
Niesamowite! Przybyłem tutaj, szukając tego dla normalnego projektu Java. Ładne ogólne rozwiązanie bez specyfiki Linta dla Androida.
TWiStErRob
Configuration 'compile' in project ':myapp' is deprecated. Use 'implementation' instead. The CompileOptions.bootClasspath property has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the CompileOptions.bootstrapClasspath property instead.Podczas uruchamiania tego wystąpił błąd .
Fruit
wypełnij raport o błędzie tutaj: github.com/ben-manes/gradle-versions-plugin/issues
Marcin Orłowski
2
Metoda „Dostępne nowsze wersje bibliotek” nie działała, ale jest idealna! (Używam wielu plików stopni ze zmiennymi dla wersji lib)
norbDEV
Czy możesz dodać zdjęcie tej wtyczki? Nie znalazłem tego na liście.
CoolMind
14

DEPRECATED - ZOBACZ AKCEPTOWANĄ ODPOWIEDŹ NA NOWOCZESNY SPOSÓB

Narzędzie, które przedstawiam poniżej, nie działa w nowych wersjach Androida Studio / Gradle, a jego autor już go nie utrzymuje ( stan na 30.10.2016 ). Dlatego należy zastosować rozwiązanie przedstawione w zaakceptowanej odpowiedzi, chyba że działa na starej wersji Androida Studio.


Od stycznia 2016 r. Dostępna jest wtyczka do Android Studio, która robi coś podobnego, zwana Kontrolerem wersji zależności , a której źródła można znaleźć na GitHub .

Można go dodać poprzez wbudowany interfejs (Ustawienia> Wtyczki> Przeglądaj repozytoria ...):

Jak to wygląda w interfejsie natywnym

Po instalacji i ponownym uruchomieniu w interfejsie użytkownika pojawi się następująca karta:

Nowa karta interfejsu użytkownika pojawiająca się po ponownym uruchomieniu.

Odpowiedni build.gradlenależy następnie wkleić w lewej części panelu VersionChecker i Version Checknacisnąć przycisk. Rezultatem jest tabela, która pojawi się po prawej stronie, która zawiera najnowsze wersje bibliotek używanych w wklejonym skrypcie (jak pokazano na powyższym obrazku).

Diabeł
źródło
Nawet jeśli tego właśnie szukałem, to nie działa zgodnie z oczekiwaniami. Otworzyłem problem w repozytorium Github na ten temat. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl
Próbowałem tego i dostałem ogólny balon z informacją o błędzie / niepowodzeniu, kiedy kliknąłem „sprawdź wersje”
Greg Ennis
@GregEnnis Wystąpił problem z najnowszą wersją wtyczki. Albo użyj starszego, albo poczekaj na aktualizację ...
Dev-iL
11

Zobacz Plik> Struktura projektu, a następnie kliknij „Sugestie”. Wiem, że to rozwiązanie zostało zasugerowane przez Hemanta Sharmę i Jeremíasa Gersicicha, ale Android Studio zmieniło je w wersji 3.4.1.

wprowadź opis zdjęcia tutaj

CoolMind
źródło
ktoś jeszcze dostaje ten ekran po prostu pusty w Android Studio 3.5?
Nicola Beghin,
@NicolaBeghin, właśnie sprawdziłem pusty projekt i otrzymałem 4 sugestie. Tak, w lipcu był termin, gdy nie wyświetlał sugestii, ale naprawili ten błąd. Przypuszczam, że to problem z serwerem Google, może się czasem zdarzyć.
CoolMind,
Nie obsługujeGradle KTS
Vlad
2

Dla zależności biblioteki wsparcia (com.android.support) istnieje lepsza opcja - andle

Może również sprawdzać jcenter i maven centre.

Prosty trzy kroki, aby zaktualizować cały projekt na raz.

1. zainstaluj:

    $ sudo pip install andle

2. ustaw sdk:

    $ andle setsdk -p <sdk_path>

3. aktualizacja zależności:

    $ andle update -p <project_path> [--dryrun] [--remote] [--gradle]

--dryrun: wydrukuj wynik tylko w konsoli

--remote: sprawdź wersję w jcenter i mavenCentral

--gradle: sprawdź wersję stopnia

Aby uzyskać więcej informacji, zobacz https://github.com/Jintin/andle

Jintin
źródło
tylko dla bibliotek wsparcia?
osrl
@osrl, jeśli dodasz --remote lub -r, parsuje wersję na jcenter.
Jintin
0

Miałem do czynienia z tym samym problemem i wypróbowałem odpowiedź https://stackoverflow.com/a/35371234/6412430

To, co naprawdę działało dla mnie w Android Studio 3.4.1, to:

File -> Project Structure -> Dependencies

Po osiągnięciu tego punktu zostaną wyświetlone wszystkie zależności uwzględnione w projekcie lub module. Te, które są nieaktualne, zostaną podkreślone, a gdy je wybierzesz, jego szczegóły zostaną wyświetlone, dając ci opcje aktualizacji Zmiennej (jeśli masz ją oddzieloną od deklaracji) lub Zależności.

Trochę późno, ale to działało dla mnie.

Jeremías Gersicich
źródło
Też znalazłem tę drogę. Dziwne, że ktoś oznaczył minus.
CoolMind
-1

Aby zostać zaktualizowanym lub zalecanym dla twojego projektu, zależność powinna być taka sama jak dla projektu Android

FILE -> Project Structure -> MODULES(app) -> Dependencies

Po przejściu do zakładki zależności Kliknij +przycisk umieszczony w prawym górnym rogu okna. Po kliknięciu +Wybierz Library Dependencyotworzy się Nowe okno Choose Library DependencyWyszukaj zależność w polu wyszukiwania, wszystkie wymienione zależności Androida zostaną zaktualizowane.

Hemant Sharma
źródło
Dzięki, ale ta lista zawiera również biblioteki, których nie używam i czasami nie zawierają tego, z czego korzystam. Również Gson jest, com.google.code.gson:gson:2.2.4podczas gdy w rzeczywistości jestcom.google.code.gson:gson:2.8.5
CoolMind
czasami zależności działają z kompatybilną wersją stopni, sprawdź, czy używasz zaktualizowanej klasy w swojej klasie projektu
Hemant Sharma