piątek, 23 września 2011

AndroidPlay - część 1: Podstawy systemu Android

W tej części kursu zobaczymy, co tam ten zielony robocik ma pod maską. Pisząc oprogramowanie na daną platformę warto znać podstawy jej zachowania. Zawarta tutaj wiedza, to totalne streszczenie, dlatego jeżeli chcesz wiedzieć więcej musisz zaglądnąć np. do dobrej książki, albo na stronę developer.android.com.


Co to jest Android?

Android to zbiór oprogramowania dla urządzeń mobilnych - system operacyjny i kluczowe aplikacje. Android SDK, który instalowaliśmy w poprzednim kursie zapewnia narzędzia i API (Application Programming Interface) potrzebne do tworzenia aplikacji na platformę Android w języku Java.

Architektura Androida.

Źródło: http://developer.android.com
Android rozprowadzany jest z podstawowymi aplikacjami - klientem e-mail, programem SMS, kalendarzem, przeglądarką, kontaktami itp. Napisane są one w Javie.

Warstwę niżej widzimy szkielet aplikacyjny (Application Framework), który udostępnia nam to samo API - łącznik z bibliotekami napisanymi w C/C++ typu SQLite, OpenGL ES, biblioteki od multimediów i inne, z którego korzystają wbudowane aplikacje. Tutaj znajdują się także zarządcy (managers) - np. Activity Manager zarządzający cyklem życia aplikacji, czy Content Providers zapewniający wymianę danych pomiędzy aplikacjami.

Narzędzia Android SDK kompilują naszą aplikację wraz z zasobami do formatu .apk (przypomina mi to pliki JAR), który jest używany do instalacji oprogramowania na urządzeniu.  Każda aplikacja uruchamiana jest we własnym procesie z własną instancją maszyny wirtualnej Dalvik (odpowiednik JVM).

Na samym spodzie siedzi sobie Linux, który zapewnia zarządzanie pamięcią, procesami, siecią, dostarcza sterowniki do sprzętu.

Komponenty aplikacji.

Nasza aplikacja składa się z komponentów - bloczków ją budujących. Każdy z nich ma swoje odrębne zastosowanie i cykl życia, czyli czas tworzenia i usuwania. Każdy z tych komponentów  może być częścią naszej aplikacji, wpływać na jej ogólne zachowanie. Wyróżniamy 4 komponenty:
  • Aktywności (ang. Activities) - aktywność reprezentuje pojedynczy ekran z interfejsem użytkownika. Rozpatrzmy aplikację do wysyłania e-maili. Może ona składać się z aktywności do redagowania e-maili, przeglądania skrzynki pocztowej, czytania wiadomości - każda z tych aktywności jest od siebie niezależna, razem tworzą całą aplikację. Aktywność jest implementowana jako podklasa Activity.
  • Usługi (ang. Services) - usługa charakteryzuje się działaniem długoterminowym wykonywanym w tle, np. możemy odtwarzać muzykę podczas gdy użytkownik korzysta z innej aplikacji, albo przesyłać dane bez blokowania oddziaływania użytkownika z aktywnością. Usługa jest implementowana jako podklasa Service.
  • Dostawcy treści (ang. Content providers) - dostawca treści umożliwia dzielenie się danymi, a nawet modyfikowanie ich przez inne aplikacje (jeżeli dostawca treści na to zezwala). Możemy go użyć także do przechowywania prywatnych danych. Dostawca treści jest implementowany jako podklasa ContentProvider.
  • Odbiorniki (ang. Broadcast receivers) - odbiornik reaguje na zdarzenia systemowe takie jak wyłączenie się wyświetlacza, niski poziom naładowania baterii, przechwycenie obrazu i inne. Zdarzenia są przekazywane do odbiornika za pomocą obiektu Intent. Odbiornik jest implementowany jako podklasa BroadcastReceiver.

Plik Manifest - czyli to, co każdy program mieć musi.

Plik AndroidManifest.xml określa między innymi:
  • z jakich komponentów składa się nasza aplikacja
  • potrzebne zezwolenia np. na połączenie z siecią, dostęp do kontaktów
  • minimalne wymagania aplikacji typu: minimalny poziom API, który identyfikuje wersję platformy Android, potrzebne biblioteki np. OpenGL ES 2.0.
  • użyte lub wymagane oprogramowanie czy sprzęt, np. kamerę, bluetooth.
Wszystkie komponenty oprócz odbiorników (Broadcast receivers), które mogą być rejestrowane dynamicznie, muszą być zadeklarowane przy pomocy odpowiednich tagów: <activity>, <service>, <receiver>, <provider>. Jeżeli tego nie zrobimy to nasze komponenty nie będą widocznie dla systemu. Tak mniej więcej wygląda plik z deklaracją aktywności:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:icon="@drawable/app_icon.png" ... >
        <activity android:name="com.example.project.ExampleActivity"
                  android:label="@string/example_label" ... >
        </activity>
        ...
    </application>
</manifest>

Nie ma się co przejmować, w Eclipse mamy bardzo fajny edytor manifestu, możemy sporo wyklikać przy pomocy przyjaznego interfejsu. To by było na tyle, jeśli chodzi o takie ogólne rozeznanie.


<< Poprzednia lekcja Następna lekcja >>

Brak komentarzy:

Prześlij komentarz