Technologie Mobilne - Wykład 1 - Notatki

Charakterystyka Systemu Android

  • Android to system operacyjny działający głównie na urządzeniach mobilnych (smartfony, tablety) oraz multimedialnych (np. telewizory).
  • Posiada funkcjonalności i mechanizmy dostępne dla użytkownika.
  • Nowe funkcje (np. obsługa kamery, elementy interfejsu, sposób wyłączania ekranu blokady) są implementowane w systemie operacyjnym.
  • Dostępne jest rozbudowane środowisko programistyczne do tworzenia aplikacji na Androida.
  • Deweloperzy mają dostęp do wszystkich klas interfejsu API systemu Android.

Środowiska Programistyczne Androida

  • Początkowo używano pakietu Eclipse do tworzenia aplikacji.
  • Obecnie preferowany jest Android Studio (bazujący na IDE IntelliJ).
  • Zasady działania Androida pozostają niezależne od używanego IDE.
  • Google określa Androida jako innowacyjną, otwartą platformę, zaspokajającą potrzeby rynku urządzeń mobilnych, rozszerzającą się na nowe typy urządzeń.

Android Open Source Project (AOSP)

  • Projekt Google udostępniający kod źródłowy Androida do przeglądania, analizowania i modyfikowania.
  • Podobny do innych systemów Linuxowych, umożliwia programistom tworzenie i udostępnianie własnych dodatków do kodu.
  • AOSP tworzy wytyczne zgodności dla firm OEM i producentów urządzeń, określające sposoby przenoszenia Androida na nowe urządzenia i tworzenia akcesoriów zgodnych ze standardami Androida.
  • Celem jest zagwarantowanie typowych doświadczeń użytkownika.

Spójność Systemu Android

  • Zachowanie spójności systemu Android jest bardzo ważne dla całego ekosystemu.
  • Drastyczne modyfikacje mogą prowadzić do fragmentacji rynku i powstania konkurujących dystrybucji Androida.
  • Więcej informacji i kod źródłowy można znaleźć na stronie: https://source.android.com/index.html.

Open Handset Alliance (OHA)

  • Google angażuje się w propagowanie swojej wizji i przeniesienie marki do świata urządzeń mobilnych.
  • Model biznesowy Google jest skuteczny w Internecie i podobny w urządzeniach przenośnych.

Cel OHA

  • Celem OHA jest zmiana zamkniętego rynku telefonii przenośnej w rynek otwarty.
  • Umożliwienie użytkownikom łatwej zmiany dostawców i dostępu do aplikacji.
  • Google analizowało infrastrukturę telefonii bezprzewodowej, wymagania producentów telefonów, oczekiwania programistów i potrzeby operatorów.
  • Google i inne firmy chciały stworzyć lepszy telefon bezprzewodowy, ale Apple z iPhonem ich wyprzedziło.

Powstanie Systemu Android

  • Sojusz OHA powstał w listopadzie 2007 roku.
  • Jest to sojusz biznesowy z udziałem dużych firm z różnych sektorów rynku telefonii bezprzewodowej: producentów podzespołów, oprogramowania, operatorów telekomunikacyjnych.
  • Android został zaprojektowany przez Andy’ego Rubina, a Android Inc. została wykupiona przez Google w 2005 roku.
  • Członkowie OHA pracowali nad otwartą platformą bazującą na technologii Android Inc.

Google Mobile Services (GMS)

  • AOSP udostępnia kod źródłowy Androida oraz instrukcje dotyczące zgodności. Kod aplikacji Google nie jest udostępniany.
  • Przystąpienie do OHA daje możliwość uzyskania licencji Google Mobile Services (GMS), obejmującej aplikacje takie jak Google Play, Gmail, YouTube, Google Maps itp.
  • GMS nie jest częścią AOSP i należy ją uzyskiwać bezpośrednio od Google.
  • Członkostwo w OHA umożliwia zainstalowanie aplikacji i usług GMS na urządzeniu z Androidem.

Producenci Urządzeń dla Androida

  • Ponad połowa członków OHA to producenci telefonów (np. Samsung, Motorola, HTC, LG) oraz elektroniki (np. Intel, Texas Instruments, ARM, NVIDIA, Qualcomm).
  • Pierwszy telefon z Androidem (T-Mobile G1) został stworzony przez HTC i obsługiwany przez T-Mobile (październik 2008).
  • Od 2009 roku nastąpił boom telefonów dotykowych z Androidem.
  • Android zdobył popularność szybko, będąc tańszym rozwiązaniem niż iOS.
  • W czwartym kwartale 2010 roku Android uzyskał dominującą pozycję na rynku smartfonów.

Cechy Charakterystyczne Androida

  • Kompletna: Nowa platforma dla telefonów przenośnych stworzona w sposób kompleksowy i wyczerpujący, zaczynając od bezpiecznego systemu operacyjnego.
  • Otwarta: Platforma Android jest udostępniana na warunkach licencji open source, dając programistom dostęp do możliwości urządzeń.
  • Darmowa: Twórcy aplikacji na Androida nie ponoszą opłat licencyjnych ani tantiem.

Rozpowszechnianie Aplikacji

  • Aplikacje mogą być rozpowszechniane i sprzedawane na różne sposoby, co wiąże się z gorszym bezpieczeństwem niż u konkurencji.
  • Samodzielne rozpowszechnianie aplikacji jest bezpłatne. Sklep Google Play pobiera jednorazową opłatę rejestracyjną.
  • „Bezpłatny” oznacza brak opłat za platformę Android, nie uwzględniając kosztów projektowania, pisania, testowania, marketingu i utrzymywania aplikacji.

Android - Darmowy i Otwarty

  • Android jest jak Linux – platformą otwartą, bez tantiem i opłat licencyjnych.
  • System operacyjny jest udostępniany na warunkach Powszechnej Licencji Publicznej GNU w wersji 2 (GNU General Public License Version 2), co wymusza rozpowszechnianie usprawnień na zasadach oprogramowania otwartego.
  • Szkielet Androida jest udostępniany na warunkach licencji Apache Software License (ASL/Apache2), co pozwala na rozpowszechnianie otwartych i zamkniętych zmodyfikowanych wersji kodu źródłowego.

Komercyjne Rozszerzenia Androida

  • Firmy komercyjne mogą rozszerzać platformę bez udostępniania kodu źródłowego modyfikacji.
  • Mogą czerpać korzyści z własnych usprawnień i rozpowszechniać je na warunkach wybranej licencji.
  • Programiści mają możliwość rozpowszechniania aplikacji na warunkach dowolnej umowy licencyjnej (otwarte, komercyjne lub mieszane).

Narzędzia Programistyczne - Pakiet SDK

  • Android SDK jest dostępny bezpłatnie po zaakceptowaniu licencji Android Software Development Kit License Agreement.
  • Android Studio jest oficjalnym, zintegrowanym środowiskiem programistycznym (IDE) do tworzenia aplikacji na Androida.
  • Zawiera narzędzia Android SDK, najnowszą wersję platformy Android, obraz systemu dla emulatora Androida oraz zestaw API firmy Google.

Android Studio

  • Android Studio bazuje na bezpłatnej wersji Community Edition środowiska programistycznego IntelliJ IDEA (JetBrains s.r.o.).
  • Android to solidna platforma dla urządzeń mobilnych dzięki środowisku programistycznemu z dostępem do wszystkich mechanizmów systemu operacyjnego.
  • Sklep Google pozwala użytkownikom na kupno i sprzedaż aplikacji.

Podstawowe Pojęcia związane z Tworzeniem Aplikacji w Systemie Android

  • Cztery podstawowe komponenty do zrozumienia działania systemu Android:
    • Aktywności (obiekty klasy Activity)
    • Intencje (obiekty klasy Intent)
    • Usługi (obiekty klasy IntentService)
    • Odbiorniki rozgłoszeń (obiekty klasy BroadcastReceiver)

Obiekty Klasy Activity - Aktywności

  • Obiekty klasy android.app.Activity są podstawowymi komponentami platformy Android. Są powiązane z ekranem w aplikacji i wyświetlają interfejs użytkownika.
  • Po uruchomieniu aplikacji uruchamiana jest aktywność, która spełnia rolę punktu wejścia (ang. application entry point).
  • Aktywność główna (ang. launch activity) jest określona w pliku manifestu aplikacji.

Obiekty Klasy Intent - Intencje

  • Obiekty klasy android.content.Intent służą do tworzenia żądań przekazywanych do systemu Android.
  • Zawierają informacje potrzebne do uruchomienia zadania.
  • Przy uruchamianiu nowej aktywności tworzy się intencję opisującą tę aktywność.
  • Metoda startActivity() z obiektem klasy Intent jako parametrem wiąże akcję reprezentowaną przez intencję z określoną aktywnością i ją uruchamia.

Zarządzanie Aktywnościami

  • Aplikacja posiada jedną lub więcej aktywności, zadeklarowanych w pliku manifestu aplikacji.
  • Główna aktywność służy do uruchamiania innych aktywności.
  • Uruchomienie nowej aktywności odbywa się przez wywołanie metody startActivity() z obiektem klasy Intent jako parametrem.

Zadania OS Android

  • Jednym z zadań OS Android jest przypisywanie intencji do odpowiednich akcji.
  • Intencja może być ściśle sprecyzowana (żądanie uruchomienia konkretnej aktywności) lub ogólna (żądanie uruchomienia dowolnej aktywności spełniającej kryteria).
  • Intencje jawne (ang. explicit Intent) – precyzują tworzony obiekt.
  • Intencje niejawne (ang. implicit Intent) – definiowane ogólnie, system operacyjny prezentuje listę aplikacji, które mogą obsłużyć zadanie.

Przekazywanie Danych Między Aktywnościami

  • Intencje mogą być wykorzystywane do przekazywania danych pomiędzy aktywnościami.
  • W definicji obiektu klasy Intent można zamieścić informacje dodatkowe (ang. extras).
  • Do zamieszczania dodatkowych informacji służy metoda putExtra() z odpowiednim argumentem wywołania.

Obiekty Klasy IntentServices - Usługi

  • Usługi (obiekty klasy android.app.Service) to zadania działające niezależnie od aktywności, w tle.
  • Uruchamiane przez aktywności, wykonują zadania w tle, podczas gdy użytkownik pracuje z interfejsem aktywności.
  • Interfejs użytkownika jest obsługiwany przez wątek UIThread (główny wątek aplikacji).
  • Efektywna aplikacja korzysta z usług działających w tle i minimalizuje zadania w wątku UIThread.
  • Usługi muszą być zdefiniowane w pliku manifestu aplikacji.
  • Usługi są tworzone za pomocą metody startService(), której parametrem jest intencja powiązana z daną usługą.

Obiekty Klasy BroadcastReceivers - Odbiorniki Komunikatów

  • Odbiorniki komunikatów (obiekty klasy android.content.BroadcastReceiver) odbierają komunikaty rozsyłane za pomocą metody sendBroadcast() i na ich podstawie podejmują działania.
  • Aktywność musi zostać poinformowana o zakończeniu działania innej usługi.
  • Obiekty klasy IntentService po skończeniu działania mogą rozsyłać komunikaty rozgłoszeniowe (ang. broadcast).

System Powiadamiania

  • Usługi i odbiorniki komunikatów mogą być traktowane jako system powiadamiania.
  • Usługi rozsyłają informację o zdarzeniu, a odbiorniki je subskrybują.
  • Odbiornik określa, czy powinien obsługiwać dane zdarzenie, sprawdzając zawartość intencji rozsyłanej w komunikacie.

Aktywności i Usługi w Działaniu

  • Aktywności i usługi to zadania działające w aplikacjach.
  • Projektanci tworzą kod, aby aktywności i usługi wykonywały zadania. Odbiorniki nasłuchują rozgłoszeń i reagują na nie.
  • Aplikacje uruchamiają różne aktywności (np. przeglądarka Chrome rozpoczyna działanie od określonej aktywności).
  • Przeglądarka wysyła intencję reprezentującą zadanie udostępnienia adresu URL strony, a system Android wyświetla listę aplikacji z odbiornikami obsługującymi udostępnianie adresów URL.

Klasy i Metody

  • Wszystkie aktywności, intencje, usługi i odbiorniki komunikatów mają postać klas zdefiniowanych w modelu obiektowym systemu Android.

Klasa Activity - (android.app.Activity)

  • Jest częścią pakietu android.app.
  • Dokumentacja klas opisuje pola (właściwości klasy) i metody (operacje, funkcje).
  • Programiści nadpisują metody wybranych klas, aby realizowały potrzebne funkcje.
  • Klasa Activity posiada metodę onCreate(), w której określa się operacje wykonywane podczas tworzenia nowej aktywności.

Klasa Intent - (android.content.Intent)

  • Określa akcje do wykonania i dane niezbędne do wykonania tych akcji.

  • Konstruktory obiektów klasy Intent zawierają definicje akcji i dane.

  • Definicja intencji wywołującej aktywność o nazwie HelpActivity:

    Intent intent = new Intent(getApplicationContext(),
    HelpActivity.class);
    intent.putExtra("com.example.LEVEL", 23);
    startActivity(intent);
    
  • Metoda putExtra() dodaje dodatkowe dane dla intencji.

Pobieranie Danych z Intencji

  • Gdy klasa HelpActivity zostaje wywołana, można pobrać intencję za pomocą metody getIntent() i wyodrębnić z niej dodatkowe dane:

    Intent receiveIntent = getIntent();
    int helpLevel=receiveIntent.getIntExtra("com.example.LEVEL", 1);
    
  • Argumenty wywołania metody getIntExtra() to nazwa pobieranego parametru i jego wartość domyślna.

  • Po zdefiniowaniu obiektu klasy Intent można do niego dołączać dane za pomocą metody putExtra().

Klasa IntentService - (android.app.IntentService)

  • Klasa IntentService ma metodę onHandleIntent(), która jest wywoływana do przetwarzania żądań.
  • Do metody przekazywana jest intencja, na podstawie której usługa decyduje o wykonywanych zadaniach.

Klasa BroadcastReceiver - (android.content.BroadcastReceiver)

  • Klasa BroadcastReceiver ma metodę onReceive(), która jest wywoływana, gdy odbiornik otrzyma komunikat intencji rozgłaszany przez aktywności.
  • Po powiązaniu zadania z intencją musi zostać wykonane, co realizowane jest przez wywołanie metody onReceive().

Podsumowanie

  • Większość działań aplikacji odbywa się w aktywnościach i usługach.
  • Obiekty klasy IntentService to specyficzny rodzaj obiektów klasy Service (android.app.Service).
  • Usługa to operacja działająca w tle, bez interwencji użytkownika.
  • Intencje są używane do uruchamiania usług i aktywności.
  • Odbiorniki komunikatów są uruchamiane, gdy aktywność lub usługa wysyła intencję za pośrednictwem metody sendBroadcast().

Obiekt Klasy Application - (android.app.Application)

  • Obiekt, którego można używać do zarządzania globalnym stanem aplikacji.
  • Aktywności i usługi definiowane w pliku manifestu są definiowane jako część aplikacji.
  • Klasa Application i klasa Activity to rozszerzenia klasy Context (android.content.Context).
  • Klasa Context zawiera informacje na temat globalnego środowiska aplikacji.
  • Konteksty są wykorzystywane do uruchamiania aktywności i usług.
  • Aktywności są podklasą kontekstów i mogą uruchamiać inne aktywności.

Uzyskiwanie Kontekstu Aplikacji

  • Do pozyskania kontekstu aplikacji dla bieżącego procesu używana jest metoda getApplicationContext():

    Context context = getApplicationContext();
    
  • Klasa Activity wywodzi się z klasy Context. Tworząc kod aktywności, nie trzeba jawnie pobierać kontekstu aplikacji, można używać obiektów klasy Activity.

  • Po otrzymaniu kontekstu aplikacji można go używać do uzyskiwania dostępu do globalnych funkcji i usług aplikacji.

Architektura Androida

  • Platforma Android jest odporna na błędy i lepiej sobie z nimi radzi niż wiele konkurencyjnych rozwiązań.
  • Urządzenia działają pod kontrolą systemu operacyjnego Linux, na którym bezpiecznie wykonywane są aplikacje.
  • Każda aplikacja na Androida działa we własnej Application Sandbox („piaskownica”).
  • Aplikacje te są kodem zarządzanym (ang. managed code), co zmniejsza prawdopodobieństwo awarii urządzenia spowodowanej wadliwą aplikacją.

System Operacyjny Linux

  • Podstawowe usługi systemowe są obsługiwane przez jądro Linuksa, pełniące funkcję warstwy abstrakcji sprzętowej (ang. hardware abstraction layer).

Funkcje Jądra Systemu

  • Funkcje realizowane przez jądro systemu:
    • Wymuszanie zasad bezpieczeństwa aplikacji i udzielanych im uprawnień.
    • Zarządzanie pamięcią na niskim poziomie.
    • Zarządzanie procesami i wątkami.
    • Obsługa stosu sieciowego.
    • Dostęp do sterowników ekranu, przycisków, aparatu fotograficznego, Wi-Fi, kart pamięci, systemu dźwiękowego, konsolidatora komunikacji pomiędzy procesami (IPC) oraz sterowników zasilania.

ART - Środowisko Wykonawcze Aplikacji

  • Każda aplikacja w OS Android działa jako osobny proces wykonywany we własnej Application Sandbox.
  • Środowisko wykonawcze Androida (Android Runtime - ART) zastąpiło wirtualną maszynę DALVIK.
  • ART wprowadza kompilację z wyprzedzeniem (ang. ahead-of-time compilation) zamiast kompilacji na żądanie (JIT) w DALVIK.
  • Aplikacje są kompilowane podczas instalacji i przechowywane w formie plików wykonywalnych, których nie trzeba ponownie kompilować przed uruchomieniem.
  • DALVIK kompilował aplikacje bezpośrednio przed uruchomieniem. ART zapewnia znaczący wzrost wydajności (wprowadzony w Android 5.0).

Bezpieczeństwo i Uprawnienia

  • Integralność platformy Android jest realizowana dzięki mechanizmom zabezpieczeń.
  • Zapewniają bezpieczeństwo danych użytkownika i chronią telefon przed złośliwym oprogramowaniem.
  • Aplikacja działa jako użytkownik systemu operacyjnego.
  • System tworzy nowy profil użytkownika dla każdej instalowanej aplikacji.
  • Aplikacje działają jako różni użytkownicy, posiadają prywatne pliki, identyfikatory i bezpieczne środowisko.
  • Aplikacje są wykonywane we własnym procesie, we własnej „piaskownicy” i posiadają własny identyfikator użytkownika.

Moduł Jądra SELinux

  • W Android 4.3 wprowadzono zmodyfikowaną wersję modułu jądra systemu Security-Enhanced Linux (SELinux).
  • Zastosowano rozszerzone mechanizmy bezpieczeństwa, ograniczające aplikacje do działania w obrębie „piaskownicy” i wymuszające stosowanie obowiązkowej kontroli dostępu (MAC) dla wszystkich procesów.

Jawne Definiowanie Uprawnień Aplikacji

  • Aplikacje muszą rejestrować się i prosić o niezbędne uprawnienia do uzyskania dostępu do wspólnych zasobów systemu (np. połączenia telefoniczne, dostęp do sieci, obsługa aparatu).
  • Uprawnienia pozwalają na korzystanie z poufnych danych.
  • Aplikacje mogą wymuszać swoje własne uprawnienia, deklarując je i pozwalając innym aplikacjom ich używać (uprawnienia tylko do odczytu lub zapisu).

Uproszczony Model Przydzielania Uprawnień

  • W Android 6.0 (API level 23) wprowadzono uproszczony model przydzielania uprawnień (prośba o uprawnienia w czasie działania aplikacji).
  • Uprawnienia operujące na normalnym poziomie ochrony są przydzielane podczas instalacji, a pozostałe – w trakcie działania aplikacji.

Podpisywanie Aplikacji i Więzy Zaufania

  • Pakiety aplikacji są podpisywane certyfikatami, potwierdzając ich autentyczność (klucz prywatny znajduje się w posiadaniu programisty).
  • Rozwiązanie to pomaga nawiązać więzy zaufania między twórcą aplikacji a użytkownikiem.
  • Zapewnia programistom kontrolę nad tym, które aplikacje mogą udzielać uprawnień innym aplikacjom.

Konta Użytkowników i Profile Ograniczone

  • Od Android 4.2 (API level 17) wprowadzono możliwość tworzenia wielu kont użytkowników na urządzeniach używanych przez kilka osób.
  • W Android 4.3 (API level 18) wprowadzono konta ograniczone, pozwalające na korzystanie jedynie z wybranych aplikacji.
  • Programiści mogą dostosowywać aplikacje do kont ograniczonych, umożliwiając ograniczanie dostępu do treści.

Rejestracja Programistów w Google Play

  • Do publikowania aplikacji w Google Play programista musi utworzyć konto.
  • Google Play sprawdza, jakie aplikacje trafiają do kanału dystrybucji, i nie toleruje złośliwego oprogramowania, jednak w praktyce zdarzają się wyjątki.

Programowanie Aplikacji na Androida

  • Android SDK udostępnia interfejsy programowania aplikacji (API).
  • Podstawowe usługi urządzeń z Androidem są dostępne dla wszystkich aplikacji.
  • Aplikacje mogą udostępniać informacje innym aplikacjom i korzystać z informacji oferowanych przez system operacyjny (przy posiadaniu odpowiednich uprawnień).

Języki Programowania

  • Aplikacje dla OS Android są pisane w języku Java.
  • Microsoft umożliwia pisanie aplikacji ponad platformowych z użyciem języka C#.
  • Można tworzyć aplikacje internetowe działające na urządzeniach z Androidem (wyświetlane za pomocą przeglądarki lub kontrolki WebView w aplikacji napisanej w Javie).
  • Więcej informacji: http://d.android.com/guide/webapps/index.html

Popularne Pakiety

  • Dostępne są pakiety i biblioteki klas Javy do realizacji powszechnych czynności (generacja grafiki, obsługa baz danych, komunikacja sieciowa, bezpieczne połączenia).

Obsługa w Popularnych Pakietach

  • Kontrolki interfejsu użytkownika (przyciski, pola przewijane, pola tekstowe).
  • Układy interfejsu użytkownika (tabele, karty, listy).
  • Możliwości integracji (powiadomienia, widżety).
  • Bezpieczne połączenia sieciowe i przeglądanie WWW (SSL, WebKit).
  • Przetwarzanie kodu XML (DOM, SAX, XML Pull Parser).
  • Mechanizmy składowania strukturalnego i relacyjnych baz danych (preferencje aplikacji, SQLite).

Obsługa w Popularnych Pakietach (Ciąg Dalszy)

  • Grafika 2D i 3D (SGL, OpenGL ES, RenderScript).
  • Szkielety multimedialne do odtwarzania i rejestrowania klipów oraz strumieniowania (MediaPlayer, JetPlayer, SoundPool, AudioManager).
  • Możliwości różnych formatów audio i wideo (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG).
  • Dostęp do opcjonalnych komponentów sprzętowych (usługi lokalizacyjne, USB, Wi-Fi, Bluetooth, NFC, sensory sprzętowe).

Szkielet Aplikacji Androida

  • Szkielet aplikacji zapewnia niezbędne elementy do stworzenia aplikacji. Cykl działania aplikacji składa się z kluczowych komponentów:
    • Aktywności (funkcje wykonywane przez aplikację).
    • Fragmenty (modularne i nadające się do wielokrotnego stosowania części aktywności).
    • Mechanizmy wczytywania (asynchroniczne wczytywanie danych).
    • Grupy widoków (interfejs użytkownika).
    • Intencje (informują system o planach aplikacji).
    • Usługi (przetwarzanie w tle).
    • Powiadomienia (informują użytkownika).
    • Dostawcy treści (przekazywanie danych pomiędzy aplikacjami).

Usługi Platformy Android

  • Aplikacje wchodzą w interakcje z systemem operacyjnym i komponentami sprzętowymi urządzenia przez kolekcję menedżerów. Każdy menedżer odpowiada za przechowywanie stanu konkretnej usługi systemu operacyjnego.

Przykłady Usług Platformy Android

  • LocationManager (usługi lokalizacyjne).
  • ViewManager i WindowManager (zarządzanie interfejsem użytkownika).
  • AccessibilityManager (ułatwienia dostępu dla osób z ułomnościami).
  • ClipboardManager (dostęp do schowka).
  • DownloadManager (operacje pobierania przez HTTP).
  • FragmentManager (zarządzanie fragmentami).
  • AudioManager (dostęp do systemu dźwiękowego).

Usługi Firmy Google

  • Google udostępnia API integrujące aplikacje z licznymi swoimi usługami.
  • Umożliwia korzystanie z najnowszych wersji usług, dodając SDK do aplikacji.

Przykłady Usług Google

  • Mapy (maps).
  • Miejsca (places).
  • Usługi związane z grami (Play Game Services).
  • Mechanizmy logowania (Google Sign-in).
  • Zakupy i subskrypcje wewnątrz aplikacji (In-app Billing and Subscriptions).
  • Komunikaty w chmurze (Google Cloud Messaging).
  • Usługi analityczne (Mobile App Analytics SDK).
  • Reklamy (AdMob Ads).

Konfiguracja Środowiska Programistycznego

  • Skonfigurować środowisko do pisania programów w języku Java (Windows, Macintosh, Linux).
  • Instalacja oprogramowania:
    • Java Development Kit (JDK) w wersji 7 (http://oracle.com/technetwork/java/javase/downloads/index.html lub http://java.sun.com/javase/downloads/index.jsp).
    • Użytkownicy Mac OS X powinni stosować Java Runtime Environment w wersji 6 i skonfigurować projekt, by korzystał z JDK 7.

Dodatkowe Elementy Konfiguracji

  • Najnowsza wersja Android SDK (http://d.android.com/sdk/index.html).
  • Android Studio udostępnia narzędzia SDK, narzędzia platformy Android, najnowszą wersję platformy Android i obraz systemu dla emulatora Androida.
  • Android Studio (IDE oparte na IntelliJ IDEA Community Edition) jest zalecane przez Google i dostarczane z najnowszą wersją Android SDK.

Podstawowy Proces Instalacji

  • Pobranie i zainstalowanie JRE/JDK dostosowanego do systemu operacyjnego.
  • Pobranie i zainstalowanie/rozpakowanie Android Studio (wybrać opcję instalacji wszystkich komponentów: Android SDK i Android Virtual Device).

Dalsza Konfiguracja

  • Uruchomienie Android Studio i użycie Android SDK Manager do pobrania i zainstalowania platformy Android i innych komponentów (dokumentacja, sterowniki USB, dodatkowe narzędzia).
  • Android SDK Manager jest zintegrowany z Android Studio (dostępny jako niezależne narzędzie).
  • Zainstalowanie sugerowanych narzędzi.
  • Skonfigurowanie komputera do debugowania urządzenia (sterowniki).
  • Skonfigurowanie urządzenia (lub urządzeń) do debugowania.
  • Rozpoczęcie tworzenia aplikacji na Androida.