W listopadzie 2007 roku opublikowano pierwszą wersję Android SDK. W jej skład weszły następujące narzędzie programistyczne:

  • debbuger (program służący do dynamicznej analizy innych programów, w celu znalezienia i określenia zawartości ich błędów, tzw. bugów),

  • biblioteki (plik dostarczający dane, podprogramy oraz typy danych, z których można korzystać na poziomie kodu źródłowego programu, dzięki bibliotekom wielokrotnie używamy tego samego kodu),

  • emulator (program, który po uruchomieniu w danym systemie komputerowym duplikuje funkcje innego systemu komputerowego: pierwszy system to host – gospodarz, a drugi, emulowany przez pierwszy, nazywany jest guest – gość),

  • dokumentacja (ogół dokumentów stworzony dla określonego programu komputerowego, dokumentację dzielimy na techniczną i dokumentację użytkownika),

  • tutoriale (samouczki ukazujące krok po kroku, jak nauczyć się obsługi różnych urządzeń, programowania czy tworzenia wybranych plików; tutoriale są interaktywne, dokładniejsze niż instrukcje, bo nastawione na naukę na przykładzie),

  • FAQ (ang. frequently asked questions – zbiór krótkich porad i odpowiedzi na najczęściej pojawiające się pytania związane z obsługą systemu itp.).

RW6GjglilFm8e1
Jedno z pierwszych urządzeń wyposażonych w system Android
Źródło: Kai Hendry, dostępny w internecie: commons.wikimedia.org [dostęp 15.08.2022], licencja: CC BY 2.0.

Programiści, instalując Android SDK, mają do uwzględnienia określone parametry sprzętowe, ale mogą też korzystać z narzędzi konsolowych w celu tworzenia i debugowania aplikacji na Androida. Pojawiły się zarzuty, że system nie działa poprawnie, brakuje w nim opcji oficjalnego raportowania błędów, infrastruktura jakości nie jest spójna, a dostęp do materiałów technicznych – utrudniony. Pomimo tych uwag, tuż po upowszechnieniu Androida, do użytku trafiała prosta gra o nazwie Wąż (ang. Snake). Gracz ma za zadanie zjeść jak najwięcej (co sprawi, że wąż będzie coraz dłuższy), a przy tym nie uderzyć w ścianę ani w siebie samego.

RaPS5iFkD28dE
Logo Androida w latach 2007‑2014
Źródło: Android, dostępny w internecie: android.com [dostęp 15.08.2022], domena publiczna.
RhtsidaCcvTTL
Logo Androida w latach 2014‑2015
Źródło: Android, dostępny w internecie: android.com [dostęp 15.08.2022], domena publiczna.
R12VSxYNnfTXM
Logo Androida w latach 2015‑2019
Źródło: Android, dostępny w internecie: android.com [dostęp 15.08.2022], domena publiczna.
RJEmGhzGdyd9R
Logo Androida od 2019 roku
Źródło: Android, dostępny w internecie: android.com [dostęp 15.08.2022], domena publiczna.

Projektowanie aplikacji mobilnych

Co trzeba wziąć pod uwagę, tworząc aplikacje mobilne dla systemu operacyjnego Android? Należy pamiętać, że współpracuje on z urządzeniami mobilnymi, których zasoby są ograniczone, np. przez wydajność procesora lub rozmiar pamięci RAM.

Dodatkowo projektowanie aplikacji działających na urządzeniach z systemem operacyjnym Android wymaga analizy funkcjonalnej proponowanego rozwiązania oraz uwzględnienia specyfikacji warunków, w jakich uruchamiana jest ta aplikacja. Jednym z ważniejszych aspektów jest też sposób komunikacji aplikacji z różnymi podzespołami, w jakie wyposażone jest urządzenie, np. aparat, żyroskop czy GPS.

Przede wszystkim jednak efektywne projektowanie aplikacji, zgodne z założeniami systemu operacyjnego Android, wymaga poznania podstawowych pojęć.

Podstawowe komponenty aplikacji mobilnej

Funkcjonowanie aplikacji mobilnej obejmuje kilka podstawowych elementów składowych. Poznajmy ich definicje.

Kontekst (obiekt typu Context)

Kontekst jest środowiskiem, w którym uruchamiana jest zaprojektowana aplikacja mobilna. Za jego pośrednictwem można zarządzać aplikacją i uzyskiwać dostęp do parametrów aplikacji oraz urządzenia, na którym została uruchomiona.

Aktywność (obiekt typu Activity)

Aktywności to podstawowe elementy, z których tworzone są zaplanowane funkcjonalności aplikacji mobilnej. Oznacza to, że wywoływanie funkcji aplikacji mobilnej odbywa się przez uruchomienie aktywności. W danym zachowaniu można wywoływać kolejne aktywności, dzięki czemu uzyskujemy możliwość realizacji nawet bardzo złożonych scenariuszy. Podstawową właściwością aktywności jest krótki czas jej wykonania oraz kontakt z użytkownikiem aplikacji lub z innymi aplikacjami.

Intencja (obiekt typu Intent)

Intencje stanowią mechanizm obsługi zdarzeń występujących w aplikacji mobilnej (komunikaty asynchroniczne). Z wykorzystaniem mechanizmu intencji możliwe jest uruchomienie aktywności (także w innej aplikacji) lub serwisu w momencie wystąpienia określonego zdarzenia. Mechanizm intencji służy także do komunikacji między różnymi aplikacjami uruchomionymi na urządzeniu mobilnym oraz do obsługi zdarzeń pochodzących z innych aplikacji (np. połączenie przychodzące) i wyposażenia urządzenia (np. niski stan baterii, wykonano zdjęcie).

Usługa/Serwis (obiekt typu Service)

Usługi można traktować jako specyficzne zastosowanie aktywności. Zawierają one implementację funkcji, nie wykorzystują interfejsu komunikacji z użytkownikiem oraz wymagają długiego czasu działania. Może to wynikać z czasochłonnych algorytmów obliczeniowych lub z potrzeby dostępu do baz danych (w tym też tych zewnętrznych) i konieczności wysłania lub pobrania dużej ilości danych. Cechą charakterystyczną usługi jest działanie „w tle”. W postaci usługi często implementuje się funkcje działające cyklicznie.

Dostawcy treści (obiekt typu ContentProvider)

Dostawcy treści zapewniają dostęp do swoich zasobów innym aplikacjom zainstalowanym na urządzeniu. Udostępniane dane mogą być przechowywane przez dostawcę w bazie danych SQLite lub w innej trwałej postaci. Dostawcy treści mogą też być związani komponentami sprzętowymi zainstalowanymi w urządzeniu, takimi jak GPS.

Odbiorcy komunikatów (obiekt typu BroadcastReceiver)

Odbiorcy komunikatów umożliwiają komunikację z innymi aplikacjami dzięki otrzymywaniu konkretnych komunikatów wysyłanych przez inne aplikacje zainstalowane na urządzeniu.

Przyjrzyjmy się dwóm przykładowym implementacjom własnych komunikatów:

  • Pierwsza aplikacja jest nadawcą komunikatów. Rozesłanie komunikatu możliwe jest z wykorzystaniem przycisku lub zadania cyklicznego. Do rozsyłania komunikatów wykorzystana została metoda sendBroadcast(intent).

  • Druga aplikacja, obok głównej aktywności, posiada klasę definiującą odbiorcę komunikatów: MojOdbiorcaKomunikatow, dziedziczącądziedziczeniedziedziczącą po klasie BroadcastReceiver. Klasa MojOdbiorcaKomunikatow musi być zadeklarowana w pliku Androidmanifest.xml, z podaniem rodzaju komunikatu, na jaki ma reagować (filtr intencji). W przykładzie zdefiniowano własny typ komunikatu:

Linia 1. com kropka example kropka komunikatynadawca kropka MOJ podkreślnik KOMUNIKAT kropka.

Przygotowanie środowiska programistycznego

R17IvUjuBO0qG1
Źródło: ™/®Google LLC, dostępny w internecie: developer.android.com [dostęp 15.08.2022], licencja: CC BY 2.5.

Poznaliśmy już podstawowe pojęcia związane z projektowaniem aplikacji mobilnych. Teraz przeanalizujmy krok po kroku, jak prawidłowo zainstalować Android Studio.

  1. Przechodzimy na stronę internetową programu Android Developers.

  2. Pobieramy wersję instalacyjną odpowiednią dla używanego systemu operacyjnego. W tym celu możemy wybrać opcję Download options.

  3. Postępujmy zgodnie z informacjami wyświetlanymi w trakcie instalacji (dobrze jest wybrać obszar instalacji Android Studio na partycji dysku, która ma większą pojemność).

  4. Usuwamy plik instalacyjny, gdyż nie będzie już potrzebny.

Teraz możemy po raz pierwszy uruchomić Android Studio.

  1. Na ekranie Welcome klikamy opcję Next.

  2. Następnie mamy do wyboru opcje StandardCustom. W większości przypadków wystarczy opcja Standard, jednak dobrze jest wybrać opcję Custom.

  3. Następnie wybieramy miejsce instalacji Java Development Kit (JDK)Java Development KitJava Development Kit (JDK). Wskazujemy partycję, na której zainstalowaliśmy Android Studio.

  4. W kolejnym kroku wybieramy sposób wyświetlania programu Android Studio  – mamy do wyboru jasny (light) oraz ciemny (dark).

  5. Następnie program prosi o wybór Android SDKSoftware Development KitSDK i wskazanie miejsca instalacji – podobnie jak podczas instalacji Android Studio dobrze jest wybrać partycję z większą pojemnością. Wybieramy: Android SDK oraz API 30Performance Intel Haxm, dzięki któremu emulatory Androida potrzebne do testowania programów będą uruchamiać się szybciej i sprawnie odpowiadać na nasze działania.

  6. Następnie wyznaczamy ilość pamięci RAM, jaką jesteśmy w stanie przeznaczyć na emulator Androida. Sugerowana wartość to  recommended, ale jeśli mamy taką możliwość, możemy wybrać większą wartość.

  7. Po przejściu opisanych kroków rozpoczyna się proces instalowania wymaganych komponentów do poprawnego działania Android Studio. Może to potrwać kilka minut.

  8. Jeśli instalacja wymaganych komponentów zakończy się pomyślnie, pojawi się okno z opcjami do wyboru. Jest wśród nich możliwość stworzenia nowego projektu itp.

Słownik

Android Debug Bridge
Android Debug Bridge

interfejs do komunikacji z urządzeniem; ADB ułatwia wykonywanie różnych akcji na urządzeniu, takich jak instalowanie i debugowanie aplikacji

Android Package Kit
Android Package Kit

odmiana formatu JAR; używany jest do dystrybucji i instalacji pakietów na system operacyjny Android

Davlik Executable
Davlik Executable

pliki używane są do inicjowania oraz uruchamiania aplikacji dla platformy Android

dziedziczenie
dziedziczenie

w programowaniu obiektowym mechanizm współdzielenia atrybutów oraz zachowań pomiędzy klasą bazową a jej pochodną; dzięki dziedziczeniu niektórych zaimplementowanych rozwiązań można z nich wielokrotnie korzystać w aplikacji

Java Development Kit
Java Development Kit

darmowe oprogramowanie, udostępniające środowisko niezbędne do programowania w języku Java

Software Development Kit
Software Development Kit

zestaw narzędzi niezbędny przy tworzeniu aplikacji korzystającej z określonej biblioteki dla danego systemu, sprzętu itp.