piątek, 18 lutego 2011

MeeGo - pierwsze starcie

Głośno w ostatnim czasie zrobiło się o MeeGo i to nie za sprawą wysypu urządzeń z tą platformą mobilną, a wręcz przeciwnie - ostatnia decyzja kluczowego partnera projektu, Nokii o wyborze Windows Phone 7 jako głównego systemu dla kolejnych generacji smartfonów  postawiła duży znak zapytania co do przyszłości rozwoju MeeGo.  Na szczęści drugi duży partner w rozwoju MeeGo - Intel, zamierza ciągle intensywnie inwestować w tą platformę i zachęca do tego również inne firmy. A tych firm już teraz jest sporo. Do firm, które zadeklarował sie wspierać i używać MeeGo w swoich produktach mozna wyróżnić nie tylko takich gigantów branży elektronicznej jak AMD, Asus, Acer, Cisco, ale również wiele innych firm na czele z BMW.

Ja od dawna kibicuję MeeGo, aby jak najszybciej weszło i zdobyło rynek urządzeń mobilnych i multimedialnych. Głównym powodem jest to, że bardzo wygodnie pracuje mi się z biblioteką Qt, a myśl, że program, który napiszę w Linuksie będzie działał nie tylko na MS Window i Mac iOS, jak to miało miejsce dotychczas, ale również na wszystkich urządzeniach obsługujących MeeGo wydaje się naprawdę ekscytująca. Ostatnie decyzje Nokii również mnie nie wprawiły w najlepsze samopoczucie, ale już zdążyłem ochłonąć :) i wiem, że najlepszą rzeczą, którą mogę w takim momencie zrobić to promować tą platformę i zachęcać do niej innych. W związku z tym chciałbym rozpocząć serię artykułów pokazujących jak rozpocząć przygodę z tym systemem. Od razu również dodam, że do tej pory nie miałem żadnego doświadczenia z MeeGo i  moje wpisy raczej będą opisywać pierwsze kroki, które sam postawiłem, a nie zaawansowane zagadnienia z punktu widzenia eksperta w tej dziedzinie.

Na początek przygotowałem mały poradnik jak zainstalować podstawowe środowisko uruchomieniowe i jak skonfigurować zestaw narzędzi, które będą niezbędne do implementacji własnych programów. Poradnik ten został przygotowany w oparciu o oficjalną dokumentację znajdująca się na Wiki projektu: http://wiki.meego.com/SDK/Docs/1.1/
Getting_started_with_the_MeeGo_SDK_for_Linux. Jest ona naprawdę dobrze przygotowana i mój opis będzie raczej jej skrótem, a nie rozwinięciem. Wszystkie instrukcje zostaną pokazane na przykladzie systemu Ubuntu w wersji 10.10.

Ustawienie repozytorium

Wielkim ułatwieniem dla osób interesujących się testowaniem i rozwojem MeeGo w Ubuntu jest przygotowane dla tej dystrybucji repozytorium, które zawiera wszystkie niezbędne narzędzia do dalszej pracy. Konfigurujemy je w sposób opisany poniżej.

Tworzymy nowy plik
sudo nano /etc/apt/sources.list.d/meego-sdk.list
do którego zapisujemy:
deb http://repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.10/   /

Pobieramy klucze do repozytorium:
gpg --keyserver pool.sks-keyservers.net --recv 0BC7BEC479FC1F8A
gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -

Aktualizujemy listę pakietów:
sudo apt-get update

Sprawdzamy poprawność repozytorium:
apt-cache policy madde

Instalacja MeeGo SDK

Aby zainstalować pakiet narzędzi MeeGoo (tzw. SDK) wystarczy wskazać do instalacji meta-pakiet meego-sdk. Dzięki temu wszystkie wymagane pakiety zostaną zainstalowane.
sudo apt-get install meego-sdk

Instalacja środowiska wdrożeniowego (Target)

Należy również zainstalować wybrane środowisko wdrożeniowe MeeGo (tzw. MeeGoo Target). W jego skład wchodzi zestaw aplikacji do kompilacji, linkowania i debugowania (tzw. MeeGoo Toolchain) oraz biblioteki systemowe.

Aby sprawdzić jakie środowiska wdrożeniowe mamy do dyspozycji wydajemy polecenie:
sudo mad-admin list

Ja wybrałem do instalacji dwa z nich:
sudo mad-admin create -f meego-netbook-ia32-1.1.2
sudo mad-admin create -f meego-handset-ia32-1.1.2

Aby przetestować działanie wybranego środowiska, warto utworzyć dla niego przykładową aplikację. Można to szybko zrobić stosując narzędzia dostępne w MeeGo SDK:
mad -t meego-netbook-ia32-1.1.2 pscreate -t qt-simple qthello

Przechodzimy do katalogu z projektem i uruchamiamy kompilację:
cd qthello
mad -t meego-netbook-ia32-1.1.2 qmake
mad -t meego-netbook-ia32-1.1.2 make

Sprawdzamy czy plik wykonywalny istnieje:
file build/qthello

Aplikację również możemy uruchomić wydając polecenie: build/qthello. Powinno nam się pojawić okienko programu z widocznym przyciskiem „Hello world”. Okienko należy wyłączyć zamykając program w konsoli ponieważ nie zawiera ono paska tytułowego z przyciskami sterującymi (zamknij, minimalizuj, itp.).

Instalacja i testowanie środowiska uruchomieniowego (Runtime)

Środowisko wdrożeniowe to za mało, aby wygodnie pisać i testować programy napisane dla MeeGo. Potrzebne nam jest również środowisko uruchomieniowe (ang. MeeGo Runtime), na którym będziemy mogli przetestować na żywo jak się sprawuje nasza aplikacja. Najlepiej jakbyśmy dysponowali jakimś urządzeniem, na którym jest zainstalowany MeeGo. Jeśli jednak takim nie dysponujemy możemy skorzystać z testowego środowiska przygotowanego przez twórców MeeGo w postaci maszyn wirtualnych QEMU. Oczywiście do ich działania wymagana jest sprzętowa akceleracja wirtualizacji wbudowana w procesor. W sumie nie jest to wymóg samego MeeGo, a jedynie QEMU.

Instalacja środowiska uruchomieniowego jest dobrze opisana na Wiki MeeGo, gdzie również polecam zajrzeć: http://wiki.meego.com/SDK/Docs/1.1/Configuring_QEMU_runtimes.

Aby sprawdzić jakie środowiska mamy do dyspozycji wydajemy polecenie:
mad-admin list runtimes

Ja zainstalowałem na początek dwa z nich (uwaga: każde zajmuje ok. 650MB!):
sudo mad-admin create -f -e meego-netbook-ia32-qemu-1.1.2-runtime
sudo mad-admin create -f -e meego-handset-ia32-qemu-1.1.2-runtime

Po instalacji możemy już przetestować na własnym komputerze czy to naprawdę działa:
sudo mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweron
sudo mad remote -r meego-handset-ia32-qemu-1.1.2-runtime poweron

Po zakończonych testach wyłączamy wirtualną maszynę poleceniem:
sudo mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweroff
sudo mad remote -r meego-handset-ia32-qemu-1.1.2-runtime poweroff

Napotkane problemy

  • Niestety przy podczas pierwszej próby włączenia dowolnego środowiska dostawałem komunikat:
    Starting QEMU runtime meego-handset-ia32-w32-qemu-1.1.20101031.2201-sda-runtime
    This may take some time ...
    i nic się więcej nie działa. Nic nie startuje. Nic nie zjada zasobów procesora. Wyszło na to, że mój procesor (AMD Phenom™ II X4 925) ma jakieś problemy ze wspomaganiem wirtualizacji sprzętowej. Jest też odpowiedni wpis na Wiki Meego, który dotyczy tego problemu i tam polecam najpierw zajrzeć: http://wiki.meego.com/SDK/Docs/1.1/MeeGo_SDK_Graphics_Acceleration. U mnie problem rozwiązał się po instalacji następujących pakietów:
    sudo apt-get install qemu-kvm kvm
    wydaniu polecenia:
    sudo modprobe kvm_amd
    i restarcie komputera. Później już wszystko ruszyło z miejsca :)
  • Na innym komputerze, co do którego miałem pewność, że procesor, który się w nim znajduje (Intel i3 530) powinien sobie poradzić był taki sam problem ze uruchomieniem środowiska Runtime. Rozwiązanie było podobne jak poprzednio. Tutaj wystarczyło jedynie wpisać:
    sudo modprobe kvm_intel
  • Niestety na komputerze z AMD nie udało mi się uruchomić, żadnego środowiska uruchomieniowego dla telefonów. Domyślam się, że może to być związane z tym, że mam na nim kartę i sterowniki NVidi. Na komputerze z Intelem wszystko było OK.
Podsumowanie i zrzuty ekranu

Na koniec jeszcze dwa przykładowe zrzuty ekranu jak to wygląda na żywo.
Środowisko dla netbooków

Środowisko dla telefonów

Więcej zrzutów można obejrzeć na poniższym pokazie slajdów:

Pomimo tego, że środowisko dla netbooków, wygląda tak jak wielu czytelników zapewne widziało na różnych screenach w Internecie to nie można powiedzieć już tego samego o wersji na telefony. Jest ona bardzo okrojona, zawiera jedynie kilka dodatkowych aplikacji i w ogóle nie prezentuje się najlepiej. Ale przecież, nie jest to środowisko do codziennego używania, a jedynie do testów i rozwoju własnych aplikacji.

Na razie to tyle :) Kolejnym razem opiszę jak do tego wszystkiego podłączyć Qt Creatora.

0 komentarze:

Prześlij komentarz