Android WYKŁAD 1
Kontakt Krzysztof Bzowski kbzowski@agh.edu.pl Tel. +12 6172615 B5 / 605 http://home.agh.edu.pl/~kbzowski/
Agenda Wprowadzenie Mobilne systemy operacyjne Czym jest android? Android API Android Studio Emulator Uruchamianie i debugowanie Elementy aplikacji Android Pierwsza aplikacja
Systemy mobilne Główni gracze Historycznie
Android Platforma/System operacyjny dla urządzeń mobilnych Android Open Source Project: https://source.android.com/ Duże możliwości modyfikacji systemu (Cyanogen Mod, Android Open Kang Project, Paranoid i inne) Duże możliwości modyfikacji UI (HTC Sense, Samsung TouchWiz i inne) Dostosowanie systemu (jądro, uprawnienia administratora) Nie tylko telefony i tablety zegarkach, http://www.android.com/wear/ TV, http://www.android.com/tv/ Samochody, http://www.android.com/auto/
Android jest wszędzie Honda's Connect NVIDIA SHIELD Samsung T900 Smartwatche Samsung WW9000
Applications Aplikacje użytkownika Android (application) framework Zbiór bibliotek i funkcjonalności do zastosowania w swoich programach. Korzystają z bibliotek natywnych Native libraries biblioteki natywne androida, w większości linuksowe. System Services Usługi systemowe i medialne (wyszukiwarka, powiadomienia, nagrywanie i odtwarzanie dźwięku) Android Runtime maszyny wirtualne (Dalvik/ART). Odpowiednik JRE. Dostarcza podstawowej funkcjonalności dla aplikacji androidowych. HAL Hardware Abstraction Layer interfejs pomiędzy systemem operacyjnym a sterownikami sprzętowymi. Kernel jądro systemu bazujące na jądrze Linux z dodatkowymi mechanizmami przeznaczonymi dla mobilnych platform wbudowanych + sterowniki Android Co to jest?
Android API? Wersja API Nazwa Data 1.0 1 Apple Pie 23.09.2008 1.1 2 Banana Bread 9.02.2009 1.5 3 Cupcake 3.04.2009 1.6 4 Donut 15.09.2009 2.0 2.1 5-7 Eclair 26.10.2009 2.2.x 8 Froyo 20.05.2010 2.3 9 Gingerbread 6.12.2010 2.3.x 10 3.x 11-13 Honeycomb 24.01.2011 Wersja API Nazwa Data 4.0 14 Ice Cream Sandwitch 19.10.2011 4.0.x 15 16.12.2011 4.1.2 16 Jelly Bean 27.06.2012 4.2.x 17 13.11.2012 4.3.x 18 24.07.2013 4.4.x 19 KitKat 31.10.2013 5.0.x 21 Lollipop 3.11.2014 5.1.x 22 9.03.2015 6 23 Marshmallow 5.10.2015 7 24 Nougat 22.08.2016
Android API Dane z 1.10.2016r. Źródło: https://developer.android.com/about/dashboards/index.html
Jak wybrać docelowe Android API? Jaki jest cel mojej aplikacji / jak docelowo będzie ona wyglądać? Np. Calendar Provider API (pozwalający na odczyt, zapis, ustawienie powiadomień itd) dostępny od API 14 (Android 4.0) Np. Material Design API od API 21 (Android 5.0) Zależność od zewnętrznych bibliotek Np. LibGDX wymaga minimum API 8 (Android 2.2.x)
Wybór narzędzi Android SDK: https://developer.android.com/sdk/index.html#other Android NDK (dla aplikacji natywnych) nie wymagane: https://developer.android.com/tools/sdk/ndk/index.html JDK (Java Development Kit) 7 lub wyżej: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Środowisko programistyczne (IDE) Android Studio (zawiera SDK) oficjalne IDE od Google bazujące na IntelliJ IDEA zapewnia zawsze pełne wsparcie najnowszych wersji Androida Eclipse z Android Development Tools (ADT) oficjalnie niewspierane przez google Netbeans (NBAndroid) Emulator Android (Dostarczony z SDK) Fizyczne urządzenie do testowania Telefon lub tablet Potrzebna wiedza Podstawy JAVY i programowania obiektowego Podstawy XML Eclipse ADT Android Studio
Uwagi na temat emulatora Ilość pamięci RAM > 4GB Intel Hardware Accelerated Execution Manager (HAXM) Przyspiesza działanie emulatora systemu Android Instaluje się wraz z Android Studio (SDK) Do działania wymaga włączonego w BIOSie Intel Virtualization Technology (Intel-VT) Wspierane większość procesorów od I generacji tj. Intel i3, i5, i7 Lista wspieranych procesorów: http://ark.intel.com/products/virtualizationtechnology
Konfiguracja środowiska
Tworzenie Projektu
Nazwa projektu Nazwa (paczki) unikalna w skali światowej (zwykle odwrócona domena). Lokalizacja plików projektu
Wybór API Minimalne API obsłużone przez Aplikacje
Activity podstawowa klasa obsługująca interakcje użytkownikaplikacja. Każde "okno" aplikacji Android musi dziedziczyć po klasie Activity lub jej pochodnej (np. AppCompatActivity).
URUCHOMIENIE APLIKACJI OPCJE PODGLĄDU PLIKI PROJEKTU PALETA KOMPONENTÓW GRAFICZNYCH PODGLĄD WYGLĄDU EKRANU STRUKTURA KOMPONENTÓW NA ACTIVITY PARAMETRY KOMPONENTÓW PRZEJŚCIE MIĘDZY TRYBEM GRAFICZNYM A TEKSOWYM
LOGCAT Miejsce wyświetlania błędów
Uruchomienie aplikacji
Konfiguracja emulatora
Konfiguracja nowego emulatora ABI (Application binary interface) musi być ustawione na x86 aby emulator wspierał wirtualizację Można posiadać wiele emulatorów z różnymi wersjami systemu ANDROID
Konfiguracja nowego emulatora
Emulator może pozostać otwarty w trakcie tworzenia aplikacji Można posiadać dowolną ilość równolegle uruchomionych maszyn wirtualnych dla różnych urządzeń Uruchomienie aplikacji na emulatorze Zmiana orientacji: CTRL + F11
Uruchomienie aplikacji na fizycznym urządzeniu Aby podłączyć urządzenie (telefon/tablet) do android Studio należy aktywować opcje programistyczne na urządzeniu. Ustawienia telefonu -> Informacje o Telefonie 7 razy kliknąć "Numer kompilacji" Pojawi się napis "Jesteś teraz programistą" Opcje programistyczne będą dostępne w menu Ustawień telefonu Włączyć "Debugowanie USB" w opcjach programistycznych Potwierdzić odcisk (fingerprint) podłączonego komputera Włączyć "Pozostaw ekran włączony" Sterowniki zależą od producenta w przypadku urządzeń z serii Nexus sterowniki zawarte są w Android SDK
Uruchomienie aplikacji na fizycznym urządzeniu
Debugowanie aplikacji URUCHOM DEBUGUJ BREAKPOINT Kontynuuj Pauza programu Zatrzymanie debugowania Lista breakpointów Dezaktywacja wszystkich breakpointów HISTORIA URUCHOMIONYCH METOD WIDOCZNE ZMIENNE Show Execution Point (Alt+F10) przejdź do aktualnie wykonywanej linii kodu Step Over (F8) - Przejdź do następnej linijki Step Into (F7) - Wejdź do funkcji (programisty) Force Step Into (ALT+SHIFT+F7) - Wejdź do dowolnej funkcji (w tym SDK) Step Out (SHIFT+F8) wyjdź z funkcji Drop frame Run To Cursor (ALT+F9) wykonuj kod do pozycji kursora
Zarządzanie projektem Kody źródłowe - Klasy JAVY Zasoby (ikonki, grafiki, layouty itd) Skrypty budowy programu Gradle Konfiguracja proguard (obfuskacja, optymalizacja kodu) Manifest aplikacji (nazwa, komponenty, uprawnienia, min. API) https://developer.android.c om/guide/topics/manifest/ manifest-intro.html
Zarządzanie projektem manifest.xml package globalny, unikatowy identyfikator aplikacji (musi odpowiadać nazwie w skryptach budowy i fizycznemu katalogowi) SHIFT+F6 pozwoli na zmianę jej nazwy Ikonka, styl, nazwa aplikacji Główne Activity Aplikacji Pozwolenia
Klasa R Reprezentacja zasobów aplikacji Klasa R jest generowana automatycznie z zasobów (layoutów, ikonek, itd.) dlatego nie wolno jej zmieniać ręcznie
Zasoby: \app\src\main\res\values colors.xml dimens.xml string.xml
Pomoc w tworzeniu kodu - importy ALT+ENTER automatycznie zaimportuje paczkę lub otworzy menu pomocy
Podstawowe komponenty aplikacji Aktywności (Activities) An activity is a single, focused thing that the user can do. Pojedyncze okno aplikacji Usługi (Services) Działania wykonywane tle Odbiorcy (Broadcast Receivers) - komunikacja między OS a aplikacją Dostawcy (Content Providers) obsługa repozytoriów danych i baz danych Dodatkowe komponenty aplikacji Widoki (View) Elementy wyświetlane na ekranie (również komponenty wizualne pokroju przycisków/etykiet) Układy (Layouts) Jak zachowują się elementy na widoku i ich rozmieszczenie Intencje (Intents) Mechanizm komunikacji Zasoby (Resources) Wszystko co nie jest kodem JAVA (obrazki, pliki) Fragmenty (Fragments) Gotowe części interfejsu użytkownika
Pierwszy projekt - Activity 12 AppCompatActivity bazowa klasa dla większości aktywności z GUI 11 załadowanie widoku na ekran z zasobów
Designer
XML Uniwersalny język znaczników przeznaczony do reprezentowania różnych danych w strukturalizowany sposób. Składa się z: tagów (elementów) <RelativeView> <TextView></TextView> <TextView></TextView> </RelativeView> atrybutów przypisanych do tagów (elementów) <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello World!" /> Cechy Każdy element mieć tylko jednego rodzica Każdy element może mieć dowolną ilość potomków XML Schema deklaruje możliwe nazwy tagów i atrybutów oraz ich umiejscowienie względem siebie Kolejność atrybutów w tagu nie ma znaczenia
Designer tryb tekstowy 19 Wyświetlany tekst 21 Zdarzenie po kliknięciu (zdefiniowane w Activity) 23 Margines 36 Umiejscowienie względem innego komponentu
Obsługa przycisku MainActivity.java 18 findviewbyid zwraca widok z danym ID. ID jest numerem pobranym z zasobów!
Jeśli coś nie działa