Na konferencji I/O 2018 Google przedstawiło nowe zabawki dla programistów Androida. Został zaprezentowany Jeckpack oraz AndroidX. Google pozostawiło więcej pytań niż odpowiedzi, w tym artykule przyjrzymy się bliżej tym zagadnieniom. Wyjaśnię jak te wszystkie elementy układanki pasują do pakietu Jetpack dla Androida.
Czym jest Jetpack dla Androida?
Dokumentacja Android opisują Jetpack jako „zbiór komponentów oprogramowania, które ułatwiają tworzenie wspaniałych aplikacji na Androida”. Niezbyt wymowne. Ten opis sprawił, że wielu programistów zastanawia się, czym tak naprawdę jest Jetpack dla Androida. Spojrzenie na listę komponentów Jetpacka rodzi jeszcze więcej pytań..
Część komponentów pochodzi z biblioteki pomocniczej, takiej jak AppCompat. Czy ten pakiet to rebranding biblioteki wsparcia? A może to zamiennik? Czy można używać tych dwóch elementów obok siebie, czy wszyscy powinniśmy migrować nasze aplikacje do Jetpacka?
Składniki Jetpacka dla Androida są podzielone na następujące kategorie:
- Foundation
- Architecture
- Behavior
- UI
Większość elementów w pakiecie to ponowne rozmieszczenie i kategoryzacja istniejących już bibliotek, ale niektóre z nich są nowe. W dalszej części omówimy dokładnie poszczególne kategorie.
Uzupełnij wiedzę o Zaawansowane metody komunikacji między serwisem a aktywnością w androidzie
O co chodzi z AndroidX?
To nie analogia do IPhonów 🙂 Większość aplikacji na Androida korzysta teraz z biblioteki wsparcia. Trudno znaleźć aplikację na ten system, która nie używa tego rozwiązania, Biblioteki wsparcia są świetne w użyciu, ale przez lata ewoluowały, a nazwy stały się nieco mylące. Dostępne są na przykład com.android.support:support-v4 i com.android.support:support-v13. Umiesz je rozróżnić?
Google zdało sobie z tego faktu sprawę, że ta różnorodność ciągle zmieniających się bibliotek jest bardzo myląca dla nowych (i starych) programistów, W związku z tym postanowiono stworzyć nową strukturę pakietów, które pakiety są powiązane z systemem operacyjnym Android, a które są z Twoją aplikacją. Teraz mamy jaśniejsze, ujednolicone i jednoznaczne nazewnictwo pakietów. Nowe artefakty będą podążać za wersją semantyczną i aktualizowane niezależnie zamiast wszystkich naraz.
"androidx.fragment:fragment:$versions.fragment" "androidx.cardview:cardview:$versions.card_view" "androidx.appcompat:appcompat:$versions.appcompat"
Zobacz mapę refaktoringu AndroidX.
Czy mogę przeprowadzić migrację do AndroidaX?
Tak!. Musisz posiadać Android Studio w wersji 3.2. Przed migracją ustaw „compileSdkVersion” na 28 w pliku gradle.bulid. W przeciwnym wypadku pojawi się błąd podobny do poniższego obrazka.
Następnie idź do menu „Refactor” → „Migrate to AndroidX”. Wyświetli się komunikat ostrzegający przed migracją i zrobieniu kopii zapasowej. Zaznacz, aby wykonać kopię i naciśnij „Migrate”. Sprawdź zmiany plików, a następnie naciśnij przycisk „Do Refactor„. Gotowe 🙂
Jetpack: Foundation
Obszar Foundation obejmuje podstawowe komponenty systemu, rozszerzenia Kotlin i biblioteki testujące.
AppCompat
Biblioteka AppCompat na pewno znasz. Składa się ona z wszystkich elementów ze starych bibliotek V7.
Android KTX
Android KTX jest nową biblioteką, która jest zestawem rozszerzeń dla języka Kotlin zaprojektowanych w celu usprawnienia rozwoju aplikacji na Androida w tym własnie języku. Istnieje kilka modułów KTX, które są połączone z innymi bibliotekami w pakiecie Jetpack.
Multidex
Podczas tworzenia aplikacji i dodawaniu innych bibliotek Twoja aplikacja staje się zbyt duża co może doprowadzić do problemów z kompilacją pliku apk. Gdy aplikacja zawiera ponad 65 536 metod we wszystkich klasach, musisz podzielić plik .dex na wiele plików .dex. Więcej informacji znajdziesz tutaj.
Test
Kto lubi pisać testy? A kto lubi testować? Mało kto, ale i tak trzeba to robić. Komponent Test obejmuje klasy testowe do testowania jednostkowego. Testy jednostkowe są przeznaczone do pisania małych testów na logice biznesowej, Espresso UI służy do testowania interfejsu użytkownika.
- Uzupełnij wiedzę o: Własne kafelki w szybkich ustawieniach Androida
Jetpack: Architecture
Obszar Architecture zawiera osiem różnych bibliotek i narzędzi, które pomagają w projektowaniu aplikacji i zarządzaniu danymi używanych przez aplikację. Większość z nich to istniejące biblioteki, które zapewne znasz, ale też znalazły się nowe.
Data Binding
Ta biblioteka jest już od jakiegoś czasu. Pozwala powiązać dane z układem XML, dzięki czemu po zmianie danych widoki są automatycznie aktualizowane. Zyskujesz także mniejsza ilość kodu w logice biznesowej w celu zsynchronizowania interfejsu użytkownika z nowymi danymi.
Lifecycles
Biblioteka ta zapewnia zestaw klas i interfejsów, które umożliwiają lepsze zarządzanie komponentami aplikacji zgodnie z cyklem życia aktywności lub fragmentu, unikając wycieków pamięci. Posiada trzy klasy: Lifecycle, LifecycleOwner i LifecycleObserver. Wspólne korzystanie z nich pomaga w monitorowaniu zdarzeń i reagowania na nie. Biblioteka działa przy użyciu adnotacji dotyczących metod, dzięki czemu otrzymujesz powiadomienia o zdarzeniach, które Cię interesują.
LiveData
LiveData przechowuje dane i zapewnia ich aktualizacje. Musisz także zrozumieć, jak działa Lifecycles przed poznaniem komponentu architektury LiveData. Biblioteka implementuje wzorzec Observer, przechowuje te dane i powiadamia słuchaczy, gdy te dane ulegną zmianie.
Navigation
Komponent Navigation jest nowym komponentem architektury, który ma uprościć implementację nawigacji w aplikacji. Dzięki bibliotece i przeglądarce nawigacji wbudowanej w Android Studio możesz wizualnie zaprojektować sposób łączenia ekranów. Nawigacja polega na wizualnym połączeniu jednego ekranu z drugim za pomocą „miejsc docelowych”. Możesz także zdefiniować animacje w edytorze graficznym.
Paging
W skrócie ta biblioteka pozwala na ładowanie danych na bieżąco bez potrzeby wstawiania wszystkich danych do listy. Komponent Paging używa kilku kluczowych klas: PagedList, PagedListAdapter i DataSource. PagedList to lista, która ładuje dane z DataSource umożliwiając aplikacji ładowanie danych w porcjach. PagedListAdapter to niestandardowy RecyclerViewAdapter, który obsługuje wywołanie zwrotne DiffUtil .
Room
Lubisz SQLite w Androidzie? Jeżeli nie to ta biblioteka jest dla Ciebie. Tworzysz kilka prostych klas, które definiują Twoje dane oraz metody uzyskania do nich dostępu, a biblioteka Room zajmie się resztą. Jedyny kod SQL, który musisz napisać, dotyczy zapytań, które zazwyczaj są dość proste. Zyskujesz także możliwość sprawdzania kodu SQL podczas kompilacji.
ViewModel
Klasa ViewModel umożliwia przechowywanie danych z uwzględnieniem cyklu życia. Cechą tej biblioteki jest to, że może przetrwać ponowne utworzenie aktywności lub fragmentu w wyniku zmiany konfiguracji, takiej jak rotacja urządzenia. Również możesz ładować dane w tle i używać LiveData do powiadamiania słuchaczy, że dane są gotowe.
WorkManager
W systemie Android umieszczono kilka klas do obsługi zadań w tle lub alarmów. Różnią się one w różnych wersjach Androida i trzeba napisać dużo kodu, aby obsłużyć różne wersje systemu operacyjnego. A teraz będzie łatwiej z WorkManager poniewaz rozwiązuje ten problem i udostępnia jedną bibliotekę do tworzenia odroczonych, asynchronicznych zadań i definiowania, kiedy powinny działać. Możesz zdefiniować jednorazowe czynności lub powtarzające się zadania.
Jetpack: Behavior
Komponent ten zawiera biblioteki, które pomagają w interakcji z użytkownikiem za pośrednictwem interfejsu użytkownika, Zawiera takie elementy jak media, powiadomienia, uprawnienia, pobieranie, udostępnianie oraz plasterki..
Download manager
Usługa DownloadManager pomaga pobierać pliki w tle unikać problemów z połączeniem. Klasa DownloadManager jest usługą systemową, możesz po prostu rozpocząć pobieranie i nasłuchiwać zdarzeń, aby obsłużyć zakończenie pobierania.
Media & playback
System Android zawiera klasy MediaPlayer i AudioManager. Możesz odtwarzać multimedia i dźwięki oraz kontrolować głośność. Android obsługuje różne formaty multimediów. Możesz także użyć biblioteki ExoPlayer,
Zobacz wpisy na temat Audio & Video
Notifications
W tej części dowiesz się, w jaki sposób tworzyć i obsługiwać powiadomienia. Od Androida Lollipop można wyświetlić powiadomienie heads-up. Możesz nawet używać powiadomień na Androidzie Wear i telewizorze do kontrolowania multimediów.
Permissions
Od wersji Androida 5.0 wymagane jest teraz uzyskanie uprawnień przed uzyskaniem dostępu do niektórych elementów urządzenia, takich jak kontakty, lokalizacja. Uprawnienia deklarujesz w manifeście i musisz odpowiednio zareagować w kodzie na przypadki, w których użytkownik akceptuje lub odrzuca prośbę o pozwolenie.
Sharing
Część udostępnianie wyjaśnia, jak udostępniać zawartość oraz korzystać z klasy ShareActionProvider. Będziesz mógł udostępniać informacje innym aplikacjom i otrzymywać dane z innych aplikacji. Możesz utworzyć akcję udostępniania oraz korzystać z dostawców treści do udostępniania danych.
Slices
Plastry — to nowa biblioteka, która pozwala tworzyć fragmenty treści Twojej aplikacji wyświetlane poza aplikacją. Treść będzie wyświetlana w wyszukiwarce Google. Oprócz tego Google planuje dodać obsługę plasterków do innych aplikacji i obszarów systemu operacyjnego w przyszłości. We fragmentach możesz wyświetlić tekst, obrazy, wideo, przewijane treści, a także interaktywne elementy sterujące, takie jak przełączniki i suwaki. Plasterki mogą być również dynamicznie aktualizowane, aby odzwierciedlać zdarzenia zachodzące w aplikacji.
Uzupełnij wiedzę o: Integracja Bitbucket z Android Studio
Jetpack: UI
Ostatnia kategoria zestawu Jetpack dla Androida przedstawia wizualne aspekty interfejsu użytkownika.
Animation & transitions
Ten moduł zawiera interfejsy API dla różnych typów animacji dostępnych na Androida. Dokumentacja witryny Jetpack obejmuje stare i nowe sposoby korzystania z animacji. Możesz skonfigurować przejścia między aktywnościami, a także animacje widoków.
Auto
Jetpack pomaga tworzyć aplikacje dla Androida Auto. Możesz odtwarzać dźwięk za pomocą głośników samochodu, a także obsługiwać wiadomości SMS. Możesz przetestować aplikacje na ekranie samochodu za pomocą Desktop Head Unit, który jest narzędziem do testowania aplikacji na system Android Auto.
Emoji
EmojiCompat obsługuje znaki emoji. Dzięki temu aplikacja może być na bieżąco z najnowszymi emotkami bez względu na wersję systemu Android. Za każdym razem, gdy aktualizujesz bibliotekę, będziesz mieć najnowsze emoji. Oprócz tego Istnieje klasa EmojiSpan, która służy do tworzenia emotikonów w tekście.
Fragment
Jedna aktywność kilka fragmentów. A skoro fragmenty są takie ważne to w tej sekcji znajdziesz różne rodzaje fragmentów, takie jak: DialogFragment, ListFragment i PreferenceFragmentCompat. Ważną częścią Fragmentu jest cykl życia, a klasa Fragment zawarta w Jetpack dla Androida jest dobrze zintegrowana z komponentem Lifecycles.
Layout
W sekcji Layout dowiesz się, jak deklarować układy w XML. Opisuje również układy, takie jak LinearLayout, RelativeLayout lub ConstraintLayout. Ponadto znajdziesz porady dotyczące tworzenia list RecyclerView oraz kart CardView.
Palette
Biblioteka Palette pozwala projektować motywy układu i stosować niestandardowe kolory do elementów wizualnych w aplikacji. Na przykład możesz użyć palety, aby utworzyć tło na podstawie okładki albumu odtwarzanego. Można również utworzyć paletę i wybrać różne kolory za pomocą klasy Palette.Builder.
TV
Jeśli tworzysz aplikacje na urządzenia TV z systemem Android, to ta część jest dla Ciebie. Możesz sterować sprzętem TV. Masz możliwość korzystania z motywu Leanback, który jest stosowany do układów telewizyjnych.
Wear OS by Google
Wear OS to wersja Androida dla urządzeń przenośnych. Możesz tworzyć aplikację, która steruje multimediami z poziomu zegarka.
Co dalej?
Jak widać, całkiem sporo zawiera nowy pakiet Jetpack dla Androida. Znajdziesz tam biblioteki, które znasz, a także kilka nowych.
Mam nadzieję, że ten post stanowi dobry początek tego, co jest dostępne w Jetpack i sprawi, że będziesz korzystał z nowych rozwiązań w czasie budowania swojej aplikacji na system Android. Główna strona Jetpack znajduje się tutaj. Daj znać, która część pakietu Jetpack dla Androida najbardziej Cię interesuje.
Poszczególne komponenty będę opisywał w kolejnych wpisach. Jeżeli chcesz być na bieżąco z nowymi wpisami polub stronę MYENV na Facebooku lub śledź za pomocą kanału RSS, Twittera.
Nie zapomnij udostępnić ten wpis innym osobom, aby też mogli skorzystać z tej wiedzy. W tym celu skorzystaj z przycisków poniższych. Będę Ci za to bardzo wdzięczny. Dzięki!
Miłego dnia i Miłego kodowania