Jetpack Navigation 3 w wersji 1.0 jest stabilna 🎉. Możesz już dziś używać jej w swoich aplikacjach produkcyjnych. JetBrains używa jej już w swojej aplikacji KotlinConf.
Navigation 3 to nowa biblioteka nawigacji, która została zbudowana od podstaw, aby wykorzystywać stan Jetpack Compose stan. Daje Ci pełną kontrolę nad stosem wstecznym, pomaga zachować stan nawigacji i umożliwia łatwe tworzenie układów adaptacyjnych (np. szczegółowa lista). JetBrains udostępnia nawet wersję na wielu platformach.
Dlaczego potrzebna jest nowa biblioteka?
Pierwotna biblioteka Jetpack Navigation (obecnie Nav2) została zaprojektowana 7 lat temu. Chociaż dobrze spełnia swoje pierwotne cele i była stopniowo ulepszana, sposób tworzenia aplikacji uległ zasadniczej zmianie.
Programowanie reaktywne z deklaratywnym interfejsem użytkownika jest obecnie normą. Nav3 wykorzystuje to podejście. Na przykład NavDisplay (komponent interfejsu Nav3, który wyświetla ekrany) po prostu obserwuje listę kluczy (każdy z nich reprezentuje ekran) obsługiwaną przez stan Compose i aktualizuje swój interfejs, gdy ta lista się zmienia.
Nav2 może też utrudniać korzystanie z jednego źródła informacji o stanie nawigacji, ponieważ ma własny stan wewnętrzny. W przypadku Nav3 podajesz własny stan, co daje Ci pełną kontrolę.
Na koniec, prosiliście o większą elastyczność i możliwość dostosowywania. Zamiast jednego, monolitycznego interfejsu API Nav3 udostępnia mniejsze, odseparowane interfejsy API (lub „bloki konstrukcyjne”), które można łączyć, aby tworzyć złożone funkcje. Sama biblioteka Nav3 używa tych bloków konstrukcyjnych, aby zapewnić rozsądne wartości domyślne w dobrze zdefiniowanych przypadkach użycia nawigacji.
Dzięki temu podejściu możesz:
- dostosowywać animacje ekranu na poziomie globalnym i indywidualnym;
- wyświetlać jednocześnie kilka paneli i tworzyć elastyczne układy za pomocą interfejsu Scenes API
- łatwo zastępować komponenty Nav3 własnymi implementacjami, jeśli chcesz uzyskać niestandardowe działanie.
Więcej informacji o projekcie i funkcjach znajdziesz na blogu z okazji premiery.
Migracja z Navigation 2
Jeśli używasz już Nav2, a konkretnie Navigation Compose, rozważ migrację do Nav3. Aby Ci w tym pomóc, przygotowaliśmy przewodnik po migracji. Najważniejsze kroki:
- Dodaj zależności Navigation 3.
- Zaktualizuj trasy nawigacji, aby zaimplementować NavKey. Aby korzystać z Nav3, trasy nie muszą implementować tego interfejsu, ale jeśli to zrobią, możesz użyć funkcji rememberNavBackStack Nav3, aby utworzyć trwały stos wsteczny.
- Utwórz klasy do przechowywania i modyfikowania stanu nawigacji – to tutaj będą przechowywane stosy wsteczne.
- Zastąp NavController tymi klasami.
- Przenieś miejsca docelowe z NavGraph NavHost do entryProvider.
- Zastąp NavHost elementem NavDisplay.
Eksperymentowanie z migracją agenta AI
Możesz poeksperymentować z użyciem agenta AI, który przeczyta przewodnik po migracji i wykona kroki w Twoim projekcie. Aby wypróbować to w trybie agenta Gemini w Android Studio:
- Zapisz tę wersję przewodnika w formacie Markdown w swoim projekcie.
- Wklej to polecenie do agenta (ale nie naciskaj Enter): „Zmigruj ten projekt do Navigation 3 za pomocą”.
- Wpisz @migration-guide.md – spowoduje to przekazanie przewodnika jako kontekstu do agenta.
Jak zawsze, dokładnie sprawdź zmiany wprowadzone przez agenta AI – może on popełniać błędy.
Chętnie poznamy Twoją opinię na temat tego, jak Ty lub Twój agent sobie poradziliście. Prosimy przesłać ją tutaj.
Przepisy na nawigację w typowych scenariuszach
W przypadku typowych, ale złożonych przypadków użycia mamy repozytorium przepisów. Pokazuje ono, jak łączyć interfejsy API Nav3 w określony sposób, co pozwala wybrać lub zmodyfikować przepis zgodnie z konkretnymi potrzebami. Jeśli przepis okaże się popularny, rozważymy „przeniesienie” jego prostych części do podstawowej biblioteki Nav3 lub bibliotek dodatkowych.
Obecnie mamy 19 przepisów, w tym na:
- wiele stosów wstecznych;
- modularyzację i wstrzykiwanie zależności;
- przekazywanie argumentów nawigacji do ViewModels (w tym za pomocą Koin)
- zwracanie wyników z ekranów za pomocą zdarzeń i stanu współdzielonego.
Pracujemy obecnie nad przepisem na linki bezpośrednie oraz integracją z Koin i planujemy wiele innych. Inżynier z JetBrains opublikował też wersję przepisów dla Compose Multiplatform.
Jeśli masz typowy przypadek użycia, dla którego chcesz zobaczyć przepis, proszę prześlij prośbę o przepis.
Podsumowanie
Aby rozpocząć korzystanie z Nav3, zapoznaj się z dokumentacją i przepisami. Ponadto przez cały tydzień będziemy publikować treści techniczne, w tym:
- szczegółowy film o interfejsie API, w którym omówimy modularyzację, animacje i układy adaptacyjne;
- sesję pytań i odpowiedzi na żywo z inżynierami, którzy stworzyli Nav3.
Tydzień z Nav3 rozpocznie się 1 grudnia 2025 r.
Jak zawsze, jeśli znajdziesz jakieś problemy, proszę zgłoś je tutaj.
Czytaj dalej
-
Nowości dotyczące produktów
W 2025 r. ekosystem Androida znacznie się rozwinął i nie ogranicza się już tylko do telefonów. Deweloperzy mają dziś możliwość dotarcia do ponad 500 milionów aktywnych urządzeń, w tym urządzeń składanych, tabletów, urządzeń XR, Chromebooków i kompatybilnych samochodów.
Fahd Imtiaz • 2 minuty czytania
-
Nowości dotyczące produktów
Podczas tegorocznej konferencji Google I/O mówiliśmy o naszym zmieniającym się modelu biznesowym, który oferuje większy wybór i nowe sposoby odkrywania Twoich aplikacji i treści w Sklepie Play i poza nim. Przedstawiliśmy też zaawansowane narzędzia i statystyki, które pomogą Ci rozwijać firmę przy mniejszej złożoności.
Paul Feng • 6 minut czytania
-
Nowości dotyczące produktów
Z przyjemnością informujemy, że w Androidzie XR pojawiło się oficjalne wsparcie dla Unreal Engine i Godot. Uruchamiamy też nowe narzędzia, które zwiększą Twoją produktywność i umożliwią korzystanie z nowych funkcji XR: Android XR Engine Hub i Android XR Interaction Framework.
Luke Hopkins • 4 minuty czytania
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.