Aktualizowanie zależności daje dostęp do ich najnowszych funkcji, poprawek i ulepszeń. Aby uaktualnić zależności, musisz wiedzieć, jak Gradle rozwiązuje wersje, których potrzebujesz, jakie są związane z tym zagrożenia i jak możesz je zminimalizować.
Zastanów się nad strategią uaktualniania
Najważniejszym krokiem w przypadku każdego uaktualnienia jest analiza ryzyka. Określ, jak dobrze znasz każdą zależność, którą aktualizujesz. Przy określaniu strategii uaktualniania należy wziąć pod uwagę wiele kwestii, w tym:
Tworzenie biblioteki |
Czy tworzysz aplikację, którą użytkownicy pobierają i uruchamiają na urządzeniu? A może tworzysz bibliotekę, aby ułatwić innym deweloperom tworzenie aplikacji? Jeśli tworzysz aplikację, skup się na jej aktualizowaniu i utrzymywaniu stabilności. Jeśli tworzysz bibliotekę, skup się na aplikacjach innych deweloperów. Twoje ulepszenia wpływają na konsumentów. Jeśli uaktualnisz jeden z elementów zależnych, ta wersja stanie się kandydatem do rozwiązania zależności Gradle, co może spowodować przerwanie korzystania z tego elementu przez aplikację. Po pierwsze – w miarę możliwości ograniczaj zależności biblioteki. Im mniej zależności, tym mniejszy wpływ na rozwiązywanie zależności przez użytkownika. Aby wskazać typy wprowadzanych zmian, stosuj się do semantycznego numerowania wersji. Na przykład AndroidX stosuje semantyczne wersjonowanie i dodaje schemat wersji przedpremierowych. Aby uniknąć problemów u użytkowników, staraj się unikać aktualizacji wersji Rozważ utworzenie wersji kandydata do wydania (RC) biblioteki, aby użytkownicy mogli ją wcześnie przetestować. Szczegółowe informacje o zachowaniu zgodności z interfejsem binarnym aplikacji (ABI) biblioteki znajdziesz w wytycznych dotyczących zgodności wstecznej dla autorów bibliotek. Aby mieć pewność, że zmiany ABI są zgodne z zamierzoną zmianą wersji, użyj testów integracyjnych i narzędzi takich jak walidator zgodności binarnej. Jeśli wprowadzisz poprawki w wersji Jeśli uaktualnienie biblioteki wymaga wprowadzenia zmian, które mogą być szczególnie uciążliwe dla użytkowników, rozważ opublikowanie ich jako nowego artefaktu, aby stare i nowe wersje mogły współistnieć i umożliwić stopniowe wdrażanie. Uwaga: jeśli uaktualnienie jednej z zależnych bibliotek zawiera istotną zmianę interfejsu API, warto je przeprowadzić w wersji |
Cykl premierowy |
Jak często publikujesz aplikację lub bibliotekę? Krótsze cykle rozwoju i publikacji
dłuższe cykle rozwoju i publikacji,
|
Bądź na bieżąco z najnowszymi funkcjami |
Czy wolisz korzystać z najnowszych funkcji i interfejsów API, czy aktualizujesz tylko wtedy, gdy potrzebujesz nowej funkcji lub poprawki błędu? Zastanów się nad kompromisami związanymi z częstymi aktualizacjami. Przyszłe uaktualnienia są łatwiejsze (mniej zmian do zintegrowania), ale wiążą się z częstszym podejmowaniem ryzyka. Testowanie uaktualnień do wersji przedpremierowych (alfa, beta, kandydat do wydania) bibliotek może pomóc w przygotowaniu się na wersje stabilne. |
Nowa zależność |
Jeśli dodajesz nową zależność, rozważ przeprowadzenie rygorystycznego procesu weryfikacji, który sprawdza tę bibliotekę pod kątem wszystkich kryteriów ryzyka, aby upewnić się, że zostały one prawidłowo ocenione. Nie zezwalaj na dodawanie nowych zależności bez sprawdzenia. |
Zespół ds. współpracy z partnerami |
Czy masz specjalny zespół zajmujący się kompilacją? Czy inżynierowie oprogramowania zajmują się konserwacją kompilacji? Specjalny zespół może poświęcić więcej czasu na analizowanie ryzyka związanego z aktualizacją i testowanie nowych wersji, aby upewnić się, że kompilacja działa prawidłowo, zanim inżynierowie zaczną używać nowych wersji. |
Typ uaktualnienia |
Niektóre ulepszenia są ważniejsze od innych. Zastanów się, które z nich są dla Ciebie najważniejsze. Uaktualnienia narzędzi do kompilacji, takich jak Gradle i wtyczki Gradle, zwykle mają mniejszy wpływ na użytkowników, a duża część ryzyka dotyczy wewnętrznych aspektów kompilacji. Sama kompilacja pomaga weryfikować te zmiany. Uaktualnienia bibliotek i SDK są trudniejsze do zweryfikowania i stanowią większe zagrożenie dla użytkowników. Wtyczka Androida do obsługi Gradle (AGP) – narzędzia używane do kompilowania aplikacji lub biblioteki na Androida. To najważniejsza aktualizacja, ponieważ często obejmuje lub umożliwia ulepszenia wydajności, poprawki błędów, nowe reguły lint oraz obsługę nowych wersji platformy Android. Gradle – często musisz uaktualnić Gradle, gdy aktualizujesz AGP lub inną wtyczkę Gradle. Inne wtyczki Gradle – czasami interfejs API wtyczki Gradle ulega zmianie. Gdy aktualizujesz Gradle, sprawdź, czy są dostępne aktualizacje używanych wtyczek. Kotlin i Java – niektóre biblioteki i wtyczki wymagają minimalnych wersji języka Kotlin lub Java albo chcesz korzystać z nowych funkcji języka, interfejsów API lub ulepszeń wydajności. Platforma Android – Sklep Play wymaga regularnych aktualizacji pakietu Android SDK. Nowe wersje pakietu SDK Androida należy przetestować jak najszybciej. Niektóre uaktualnienia pakietu SDK wymagają wprowadzenia zmian w aplikacji, takich jak nowe uprawnienia lub użycie nowych interfejsów API. Biblioteki – czy chcesz nadawać priorytety bibliotekom na podstawie ich bliskości do ogólnej architektury?
Android Studio – aktualizowanie Android Studio zapewnia dostęp do najnowszych funkcji i poprawek błędów w podstawowej platformie IntelliJ IDEA oraz narzędzi do pracy z najnowszymi pakietami SDK Androida. |
Dostępne narzędzia |
Jeśli używasz wtyczek lub narzędzi, które pomagają automatyzować aktualizacje zależności, pamiętaj, aby przeanalizować wyniki i sprawdzić, czy nie ma w nich zagrożeń. |
Strategie dotyczące określonych typów uaktualnień
Uaktualnianie niektórych typów zależności może mieć efekt kaskadowy i wymagać uaktualnienia innych typów zależności. Relacje między elementami tworzenia omawiamy w artykule Wzajemne zależności między narzędziami a bibliotekami.
Podczas uaktualniania poszczególnych typów komponentów zastanów się, jak to wpłynie na inne komponenty w kompilacji.
Wtyczka Android Gradle (AGP) |
Android Studio zawiera asystenta uaktualniania AGP, który może pomóc w wykonywaniu tych zadań. Jeśli korzystasz z asystenta lub ręcznie przekształcasz konto, pamiętaj o tych kwestiach: Przeczytaj informacje o wersji AGPL. Uaktualnij Gradle do co najmniej podanej wersji. Zaktualizuj Android Studio do wersji obsługującej wybraną wersję AGP. Używaj wersji Android Studio i AGP, które obsługują pakiet Android SDK, którego chcesz użyć. Sprawdź zgodność z narzędziami kompilacji pakietu SDK, NDK i JDK. Jeśli opracowujesz wtyczkę Gradle (do użytku wewnętrznego lub publicznego), która rozszerza dane z AGP lub korzysta z nich, sprawdź, czy musisz ją uaktualnić. Czasami AGP wycofuje interfejsy API, a potem je usuwa, co powoduje niezgodność z poprzednimi wtyczkami. |
Kompilator, język i czas wykonywania Kotlin |
Informacje o znanych problemach i niezgodnościach związanych z Kotlinem znajdziesz w informacjach o wersji Kotlina. Jeśli używasz Jetpack Compose:
Jeśli używasz Kotlin Symbol Processing (KSP), zapoznaj się z krótkim wprowadzeniem do KSP, aby dowiedzieć się, jak skonfigurować tę funkcję, oraz z dostępnymi wersjami KSP. Pamiętaj, że musisz użyć wersji KSP zgodnej z wersją Kotlina. Jeśli np. używasz Kotlina w wersji 2.0.21, możesz użyć dowolnej wersji wtyczki KSP, która zaczyna się od 2.0.21, np. 2.0.21-1.0.25. Zwykle nie trzeba aktualizować procesorów KSP (takich jak kompilator Room, który pojawia się jako zależność Uaktualnij wszystkie używane przez siebie wtyczki kompilatora Kotlin. Interfejs API wtyczki kompilatora Kotlina często się zmienia w kolejnych wersjach, a wtyczki muszą używać zgodnego interfejsu API. Jeśli wtyczka jest wymieniona w sekcji Wtyczki kompilatora, musisz użyć tej samej wersji co kompilator Kotlin. W przypadku innych wtyczek kompilacji zapoznaj się z ich dokumentacją, aby znaleźć odpowiednie mapowanie. Pamiętaj, że wtyczki kompilatora, które nie są aktualizowane wraz z kompilatorem Kotlin, często są opóźniane, ponieważ czekają na stabilizację interfejsu API wtyczki kompilatora. Zanim zaktualizujesz Kotlina, sprawdź, czy wszystkie używane przez Ciebie wtyczki kompilatora mają dostępne odpowiednie uaktualnienia. W niektórych przypadkach język Kotlin ulega zmianom, co wymaga zaktualizowania kodu. Zdarza się to najczęściej, gdy testujesz funkcje eksperymentalne. Jeśli po uaktualnieniu kompilatora Kotlina kod nie jest prawidłowo kompilowany, sprawdź notatki do wersji Kotlina, aby dowiedzieć się, czy nie nastąpiły zmiany w języku lub czy nie doszło do uszkodzenia biblioteki czasu wykonywania. |
Wtyczki kompilatora Kotlin |
Jeśli musisz uaktualnić wtyczkę kompilatora Kotlin, zaktualizuj ją do wersji zgodnej z używaną wersją Kotlina. Większość wtyczek kompilatora Kotlin używa tej samej wersji co kompilator Kotlin lub uruchamia się z wymaganym kompilatorem Kotlin. Jeśli np. wersja wtyczki to 2.0.21-1.0.25, musisz użyć wersji kompilatora Kotlin 2.0.21. Zmiana wersji kompilatora Kotlina może wymagać innych zmian. |
Biblioteki |
Biblioteki to najczęściej aktualizowane zależności w kompilacji. Dostępne uaktualnienia znajdziesz w edytorze Android Studio. Niektóre biblioteki wymagają minimalnej ilości Niektóre biblioteki określają też minimalną wersję Kotlina, której należy używać. Zaktualizuj wersję Kotlina w plikach kompilacji, aby była co najmniej równa określonej wersji. |
Gradle |
Czasami nowe wersje Gradle wycofują istniejące interfejsy API, usuwając je w przyszłej wersji. Jeśli opracowujesz wtyczkę Gradle, jak najszybciej ją zaktualizuj, zwłaszcza jeśli jest ona publiczna. Niektóre uaktualnienia Gradle wymagają znalezienia nowych wersji używanych wtyczek. Pamiętaj, że te wtyczki mogą być rozwijane z opóźnieniem, ponieważ są one aktualizowane, aby odpowiadały najnowszym interfejsom API wtyczek Gradle. Aby uaktualnić Gradle:
|
Wtyczki Gradle |
Uaktualnione wtyczki Gradle czasami używają nowych lub zmienionych interfejsów API Gradle, które z kolei wymagają uaktualnienia Gradle lub ewentualnie wprowadzenia zmian w ich konfiguracji w plikach kompilacji. W obu przypadkach zobaczysz ostrzeżenia lub błędy kompilacji wskazujące na niezgodność. Podczas aktualizowania wtyczek zawsze aktualizuj Gradle. |
SDK na Androida |
Android Studio zawiera Asystenta aktualizacji pakietu SDK Androida, który może pomóc w wykonywaniu tych zadań. Jeśli korzystasz z asystenta lub ręcznie przekształcasz konto, pamiętaj o tych kwestiach: Każda wersja pakietu Android SDK zawiera nowe funkcje i interfejsy API, poprawki błędów oraz zmiany w działaniu. Sklep Play wymaga zaktualizowania Przed uaktualnieniem pakietu Android SDK przeczytaj informacje o wersji. Zwróć szczególną uwagę na sekcję dotyczącą zmian w zachowaniu, która obejmuje:
Sekcja „Zmiany zachowania” może być dość długa, ale przeczytaj ją uważnie, ponieważ często zawiera ważne zmiany, które musisz wprowadzić w aplikacji. Aby spełnić wymagania Sklepu Play, musisz uaktualnić Aby korzystać z nowych funkcji pakietu SDK podczas tworzenia aplikacji i zapewnić zgodność podczas kompilacji, zaktualizuj wtyczkę Android Gradle (AGP) i Android Studio. Obejmuje to nowe i ulepszone narzędzia do nowych pakietów SDK. Zobacz minimalne wersje narzędzi dla poziomu interfejsu API Androida. Podczas aktualizacji pakietu Android SDK zaktualizuj wszystkie używane biblioteki AndroidX. AndroidX często używa nowych i zaktualizowanych interfejsów API, aby zapewnić lepszą zgodność i wydajność w różnych wersjach pakietu SDK Androida. |
Android Studio |
W ogóle możesz zaktualizować Android Studio w dowolnym momencie. Możesz zobaczyć komunikaty z prośbą o zaktualizowanie AGP lub pakietu Android SDK. Te uaktualnienia są zdecydowanie zalecane, ale nie są wymagane. Jeśli później chcesz użyć Android Studio do uaktualnienia AGP lub pakietu Android SDK, możesz znaleźć te opcje w menu Narzędzia: |
Java |
Jeśli w aplikacji na Androida masz kod źródłowy w języku Java, możesz skorzystać z nowych interfejsów API w tym języku. Każda wersja pakietu Android SDK obsługuje podzbiór interfejsów API Java i funkcji językowych. AGP zapewnia zgodność z niższymi wersjami pakietu SDK Androida za pomocą procesu zwanego desugaringiem. Informacje o wersji pakietu SDK Androida zawierają informacje o tym, który poziom Java jest obsługiwany, oraz o potencjalnych problemach. Niektóre z tych problemów mogą też dotyczyć kodu źródłowego Kotlina, ponieważ Kotlin ma dostęp do tych samych interfejsów API Javy. Zwróć szczególną uwagę na sekcje interfejsu JDK API, które pojawiają się w sekcji „Zmiany w działaniu” w informacjach o wersji, nawet jeśli nie masz kodu źródłowego w Javie. Korzystanie z JDK jest określone w kilku miejscach w skryptach kompilacji. Więcej informacji znajdziesz w artykule Java w wersji Androida. |
Analiza uaktualnienia
Uaktualnianie zależności może wiązać się z ryzykiem w postaci zmian w interfejsie API i zachowaniu, nowych wymagań dotyczących użycia, nowych problemów z bezpieczeństwem, a nawet zmian licencji. Czy na przykład musisz:
- Czy należy zmienić kod, aby wprowadzić zmiany w interfejsie API?
- Dodać nowe kontrole uprawnień?
- Utworzyć dodatkowe testy lub zmodyfikować istniejące testy, aby sprawdzić zmiany zachowania?
Pamiętaj, że zaktualizowana wersja zależności ma zaktualizowane wersje swoich zależności. Może to szybko doprowadzić do ogromnego zestawu zmian.
Jeśli używasz wtyczek lub narzędzi, które pomagają automatyzować uaktualnianie zależności, pamiętaj, że nie wykonują one żadnej analizy. Zamiast tego aktualizują biblioteki do najnowszych wersji. Nie zakładaj, że wszystko będzie działać prawidłowo po automatycznym uaktualnieniu.
Kluczem do udanego przejścia na nowszą wersję jest analiza uaktualnienia:
- Określ różnice w zależnościach przed i po uaktualnieniu.
- Sprawdź każdą zmianę i ustal związane z nią zagrożenia.
- Zmniejszanie ryzyka lub akceptowanie lub odrzucanie zmian.
Sprawdzanie różnic w zależnościach
Pierwszym krokiem w analizie uaktualnienia jest określenie, jak zmienią się zależności. Aby szybko sprawdzać zmiany, korzystaj z kontroli wersji (VCS, np. Git) i wtyczki Dependency Guard. Twoim celem jest utworzenie zrzutu ekranu przed i po oraz ich porównanie.
Konfigurowanie i tworzenie pierwszego punktu odniesienia
Zanim rozpoczniesz uaktualnianie, upewnij się, że projekt został skompilowany.
W idealnej sytuacji należy usunąć jak najwięcej ostrzeżeń lub utworzyć wartości bazowe, aby śledzić, które ostrzeżenia już się pojawiły.
Lint
- Uwzględnij ostrzeżenia jako błędy, dodając
android { // ... lint { warningsAsErrors = true } }
do
build.gradle.kts
w każdym module.- Jeśli masz już wiele ostrzeżeń, utwórz podstawę referencyjną Androida lint. Z czasem usuń istniejące ostrzeżenia (lub wyłącz te, które Cię nie interesują).
Kompilator Kotlina: włącz
-Werror
, aby traktować wszystkie ostrzeżenia jako błędy. Zobacz Jak definiować opcje.Inne narzędzia: jeśli używasz innych narzędzi do analizy statycznej, które obsługują śledzenie linii bazowych, skonfiguruj ich linie bazowe.
Wartości graniczne ostrzeżeń ułatwiają wyświetlanie nowych ostrzeżeń wprowadzanych podczas aktualizacji zależności. Za pomocą Dependency Guard możesz sprawdzać zmiany w zależnościach i ich wersjach.
W katalogu wersji gradle/libs.versions.toml dodaj:
[versions]
dependencyGuard = "0.5.0"
[plugins]
dependency-guard = { id = "com.dropbox.dependency-guard", version.ref = "dependencyGuard" }
Dodaj do pliku kompilacji aplikacji te informacje:
Kotlin
plugins { alias(libs.plugins.dependency.guard) } dependencyGuard { configuration("releaseRuntimeClasspath") }
Groovy
plugins { alias(libs.plugins.dependency.guard) } dependencyGuard { configuration('releaseRuntimeClasspath') }
Konfiguracja releaseRuntimeClasspath
jest prawdopodobnie celem, ale jeśli chcesz użyć innej konfiguracji, uruchom ./gradlew dependencyGuard
bez wymienionej konfiguracji w pliku kompilacji, aby wyświetlić wszystkie dostępne konfiguracje.
Po zakończeniu konfiguracji uruchom ./gradlew dependencyGuard
, aby wygenerować raport w app/dependencies/releaseRuntimeClasspath.txt
. To jest raport podstawowy.
Zapisz go w systemie kontroli wersji (VCS).
Pamiętaj, że Dependency Guard rejestruje tylko listę zależności biblioteki. W plikach kompilacji występują też inne zależności, np. wersje pakietu SDK Androida i wersje JDK. Zmiany w VCS przed zmianami zależności umożliwiają VCS diff wyróżnienie tych zmian.
Uaktualnianie i porównywanie z wartością odniesienia
Gdy masz już punkt odniesienia, zaktualizuj zależności i inne zmiany w kompilacji, które chcesz przetestować. Na tym etapie nie aktualizuj kodu źródłowego ani zasobów.
Uruchom ./gradlew lint
, aby wyświetlić nowe ostrzeżenia lub błędy lint. Rozwiąż wszystkie ważne problemy, a następnie zaktualizuj wartości odniesienia ostrzeżenia, wykonując ./gradlew lint
-Dlint.baselines.continue=true
. Jeśli do rejestrowania wartości progowych używasz innych narzędzi, musisz też zaktualizować ich wartości.
Aby zaktualizować raport podstawowy, uruchom ./gradlew dependencyGuard
. Następnie uruchom narzędzie VCS diff, aby zobaczyć zmiany poza biblioteką. Prawdopodobnie zawiera ona znacznie więcej uaktualnień biblioteki, niż Ci się wydaje.
Analizowanie zagrożeń
Gdy już poznasz zmiany, zastanów się nad możliwymi zagrożeniami związanymi z każdą zaktualizowaną biblioteką. Pomoże Ci to skoncentrować się na testowaniu lub dokładniejszym badaniu zmian. Aby zapewnić spójność analizy, określ zestaw zagrożeń, które mają być analizowane w przypadku Twojego projektu.
Uwagi:
Zmiany wersji głównej |
Czy numer wersji głównej się zmienił? Gdy zobaczysz ten komunikat, zwróć szczególną uwagę na biblioteki, których dotyczy problem, i rozważ poniższe kwestie. Jeśli Twój kod korzysta z jakichkolwiek eksperymentalnych interfejsów API (które często wymagają akceptacji za pomocą adnotacji lub specyfikacji pliku kompilacji), nawet zmiany w wersjach podrzędnych lub poprawek, np. przejście z 1.2.3 na 1.3.1 lub z 1.2.3 na 1.2.5, mogą wiązać się z dodatkowymi zagrożeniami. |
Niestabilny interfejs API |
Niektóre wersje bibliotek mogą zawierać niestabilne interfejsy API. Zwykle są to interfejsy API, które są w trakcie tworzenia lub zależą od innego niestabilnego interfejsu API. Zwykle są one ograniczone do wersji wstępnych, takich jak wersje alfa, deweloperskie lub eksperymentalne, ale niektóre biblioteki zawierają interfejsy API oznaczone jako eksperymentalne lub niestabilne. Jeśli to możliwe, unikaj takich interfejsów API. Jeśli musisz ich używać, odnotuj ich użycie i sprawdź, czy w późniejszych wersjach nie zostały one zmienione lub usunięte. |
Dynamiczne działanie |
Niektóre biblioteki działają inaczej w zależności od czynników zewnętrznych. Na przykład biblioteka, która komunikuje się z serwerem, zależy od zmian na tym serwerze.
|
scalanie plików manifestu, |
Biblioteki opublikowane jako archiwa Androida (AAR) mogą zawierać zasoby i pliki manifestu, które są scalane z aplikacją. Mogą one dodawać nowe uprawnienia i komponenty Androida, takie jak aktywności lub odbiorniki transmisji, które działają pośrednio. |
Aktualizacje w czasie działania |
Niektóre biblioteki korzystają z funkcji, które można aktualizować poza kontrolą aplikacji. Biblioteka może używać Usług Play, które są aktualizowane niezależnie od pakietu SDK Androida. Inne biblioteki mogą być powiązane z usługami w aplikacji zewnętrznej aktualizowanej niezależnie (często za pomocą AIDL). |
Ile wersji pomijasz? |
Im dłużej czekasz na uaktualnienie biblioteki, tym większe potencjalne ryzyko. Jeśli widzisz, że wersja zmieniła się znacząco, np. z 1.2.3 na 1.34.5, zwróć szczególną uwagę na tę bibliotekę. |
Przewodniki dotyczące migracji |
Sprawdź, czy biblioteka udostępnia przewodnik po migracji. Może to znacznie skrócić czas analizy ryzyka i planowania działań zapobiegających. Pamiętaj, że obecność takiego przewodnika jest dobrym wskaźnikiem tego, że deweloper zwraca uwagę na zgodność i rozważa możliwość łagodzenia skutków aktualizacji. |
Informacje o wersji |
Sprawdź informacje o wersji (jeśli są dostępne) każdej zmienionej biblioteki. Sprawdź, czy nie ma zmian, które powodują przerwanie działania aplikacji lub nowych wymagań, np. dodanych uprawnień. |
Pliki README |
Niektóre pliki README biblioteki zawierają informacje o potencjalnych zagrożeniach, zwłaszcza jeśli biblioteka nie zawiera informacji o wersji. Poszukaj _znanych problemów_, zwłaszcza znanych problemów z bezpieczeństwem. |
Sprawdzanie znanych luk w zabezpieczeniach |
Platforma Google Play SDK Index śledzi luki w zabezpieczeniach wielu popularnych pakietów SDK. Konsola Play informuje, czy używasz któregoś z wymienionych pakietów SDK zawierających znane luki w zabezpieczeniach. Podczas edytowania plików kompilacji w Android Studio IDE sprawdza indeks pakietu SDK i oznacza użycie podatnych wersji bibliotek. Narodowy Instytut Standaryzacji i Technologii (NIST) prowadzi dużą narodową bazę danych o lukach w zabezpieczeniach (NVD). Wtyczka Gradle Dependency Check sprawdza używane zależności pod kątem NVD. Aby korzystać z Dependency Check, poproś o klucz interfejsu NVD API, skonfiguruj wtyczkę Gradle i uruchom |
Konflikty wersji |
Czy wersje są rozwiązywane zgodnie z oczekiwaniami? Poszukaj konfliktów, zwłaszcza znaczących różnic między wersjami. Szczegółowe informacje o szukaniu konfliktów znajdziesz w artykule Rozwiązywanie zależności w Gradle. W szczególności w raporcie W miarę możliwości współpracuj z autorami zależności, aby rozwiązać konflikty. Jeśli Twoja firma na to pozwala, wprowadź zmiany w bibliotece (przesyłanie w górę), aby zwiększyć jej zgodność. |
Sprawdzanie licencji |
Podczas uaktualniania biblioteki sprawdź, czy zmieniły się licencje. Biblioteka może zmienić licencję na taką, która nie będzie już zgodna z Twoją aplikacją lub biblioteką. Nowe zależności pośrednie mogą też wprowadzać niezgodne licencje. Szczegółowe informacje o sprawdzaniu bieżącego zestawu licencji w zależności od zależności znajdziesz w artykule Weryfikowanie licencji. |
Ryzyko związane z konserwacją i jakością |
Biblioteki z repozytoriami publicznymi:
|
Oprogramowanie open source a closed source |
Jeśli biblioteka jest typu open source, debugowanie problemów będzie łatwiejsze niż w przypadku biblioteki zamkniętej, niezależnie od tego, czy problemy występują w Twoim kodzie, czy w kodzie biblioteki. Zminimalizuj zależności od zamkniętych źródeł i przeprowadź dodatkową kontrolę podczas ich oceny. Czy istnieją dobre alternatywy pasujące do Twojego przypadku użycia? Jakie gwarancje jakości usług są dostępne w przypadku bibliotek z zamkniętym kodem źródłowym? Jeśli zdecydujesz się użyć zależności ze źródłem zamkniętym, przygotuj się na napisanie dodatkowych przypadków testowych, aby ograniczyć ryzyko. |
Uruchamianie kompilacji
Utwórz projekt. Sprawdź, czy nie pojawiły się nowe błędy lub ostrzeżenia. Jeśli uda Ci się ustalić, która biblioteka powoduje problemy, zaznacz to jako ryzyko związane z aktualizacją tej biblioteki.
Jeśli zobaczysz nowe ostrzeżenia o obniżeniu wartości, dodaj je jako konkretne zagrożenia dla biblioteki, która je wygenerowała. Mogą one zostać usunięte w kolejnych wersjach. Jeśli chcesz nadal korzystać z tej biblioteki, musisz poświęcić czas na przekształcenie kodu z wykorzystującego wycofane interfejsy API na korzystający z ich zamienników. Możesz też śledzić wycofania, aby wiedzieć, kiedy funkcje zostaną usunięte.
Wykrywanie problemów z interfejsem API za pomocą lint
Android Lint może wykrywać wiele problemów w aplikacji, w tym te, które są wynikiem zmiany wersji zależności lub pakietu Android SDK. Jeśli na przykład uaktualnisz pakiet compileSdk
i użyjesz nowych interfejsów API, lint zgłosi te, które nie są dostępne w poprzednich wersjach pakietu SDK.
Lint działa w edytorze Android Studio i zgłasza problemy, gdy wprowadzasz zmiany.
Zwykle nie jest ona jednak wykonywana w ramach kompilacji w Studio ani podczas kompilacji w wierszu poleceń, chyba że używasz celu build
lub lint
.
Jeśli używasz ciągłej integracji (CI), uruchom gradlew
build
lub gradlew lint
podczas kompilacji CI (lub co najmniej podczas kompilacji nocnych), aby wykrywać tego typu błędy.
Jeśli nie używasz CI, pamiętaj, aby co jakiś czas uruchamiać gradlew lint
.
Zwróć szczególną uwagę na błędy i ostrzeżenia lint. Niektóre biblioteki są dostarczane z własnymi mechanizmami kontroli lint, które pomagają zapewnić prawidłowe korzystanie z ich interfejsów API. Niektóre nowe wersje bibliotek zawierają nowe ostrzeżenia i błędy lint, które powodują, że podczas kompilacji pojawiają się nowe raporty.
Zmniejszanie ryzyka
Po określeniu zagrożeń związanych z ulepszeniami zdecyduj, jak je ograniczyć:
- Akceptowanie niektórych zagrożeń takimi, jakie są. Niektóre zagrożenia są na tyle niewielkie, że można je zaakceptować, zwłaszcza gdy czas i zasoby na uaktualnienie są ograniczone.
- odrzucać niektóre ryzyka; Niektóre ulepszenia mogą wydawać się zbyt ryzykowne, zwłaszcza jeśli masz ograniczony czas lub zasoby, które mogą Ci pomóc w ich złagodzeniu. Jeśli musisz dokonać selekcji, skup się na aktualizacjach niezbędnych do usunięcia napotkanych błędów lub nowych funkcji, których potrzebujesz.
- Minimalizowanie pozostałych zagrożeń
- Rozważ grupowanie uaktualnień w mniejsze, niezależne zestawy zmian. Pozwala to zmniejszyć ogólne ryzyko i umożliwia częściowe cofnięcie zmian.
- szczegółowo analizować zmiany;
- Testuj aplikację, aby sprawdzić, czy nie ma w niej nieoczekiwanych zmian. Dodaj nowe testy w miejscach, w których są potrzebne, aby zwiększyć pewność siebie podczas aktualizacji.
- Jeśli znajdziesz coś wątpliwego, sprawdź źródło (jeśli jest dostępne).
- Wprowadź wymagane zmiany w źródle lub kompilacji.
Dokumentowanie decyzji. Jeśli zagrożenia związane z aktualizacją stają się problemem podczas uruchamiania aplikacji, udokumentowanie analizy ryzyka może ograniczyć niezbędną analizę błędów.
Sprawdzanie licencji
Deweloperzy bibliotek udzielają licencji na korzystanie z bibliotek. Musisz przestrzegać warunków licencji, w przeciwnym razie nie będziesz mieć dostępu do biblioteki. Niektóre licencje są bardzo liberalne i często wymagają jedynie przypisania autorstwa biblioteki i wyświetlenia tekstu licencji użytkownikom. Niektóre z nich są uważane za wirusowe. Jeśli używasz takich bibliotek, musisz zastosować tę samą licencję do swojej aplikacji lub biblioteki.
Licencje mogą się zmieniać w dowolnym wydaniu. Podczas aktualizacji sprawdź, czy używane przez Ciebie zależności są objęte licencją zgodną z Twoją aplikacją lub biblioteką.
Jeśli licencja jest niezgodna (lub stała się niezgodna), nie możesz używać tej wersji biblioteki. Możesz:
- Skontaktuj się z właścicielem biblioteki i poproś o przedłużenie obecnej licencji lub o przyznanie podwójnej licencji, aby umożliwić korzystanie ze starej licencji.
- Skontaktuj się z zespołem prawnym, aby ustalić, czy możesz zmienić licencję na zgodną.
- Znajdź inną bibliotekę z kompatybilną licencją i w razie potrzeby zmodyfikuj aplikację.
- Utwórz odgałęzienie ostatniej zgodnej wersji biblioteki (jeśli licencja na to zezwala i jeśli zmiany nie mają charakteru wstecznego) i wprowadź własne zmiany.