Tym razem będzie o tym jak napisać, skompilować i uruchomić swoją pierwszą aplikacje mobilną dla MeeGo. Wpis ten jest mocno inspirowany następującą stroną na Wiki MeeGo:
http://wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World.
Zakładam na początek, że mamy już zainstalowane środowisko wdrożeniowe i uruchomieniowe oraz, że została przeprowadzona wymagana konfiguracja Qt Creatora.
W pierwszym momencie - zapewne jak się nie trudno domyśleć, należy uruchomić Qt Creatora. W następnym kroku przystępujemy do stworzenia nowego projektu wybierając odpowiednio w menu Plik → Nowy plik lub projekt → Mobilna aplikacja Qt. Potwierdzamy klikając Wybierz… .
Określamy następnie nazwę projektu i wybieramy jego docelową lokalizację.
W kolejnym kroku wybieramy jako wersję Qt tą dostępną po instalacji MeeGo SDK.
Możemy również zmienić domyślne nazwy plików, ale skoro ma to być tylko aplikacja testowa polecam pozostawienie tych zaproponowanych przez kreatora.
Ostatecznie dostajemy ogólne podsumowanie nowo utworzonego projektu:
Prawdopodobnie Qt Creator otworzy się w trybie projektowania interfejsu, dlatego przełączamy się do trybu Edycji kodu źródłowego. Posługując się nawigatorem projektu otwieramy plik main.cpp i zamieniamy jego zawartość na następującą:
#include <qapplication> #include <qlabel> #include <qsysteminfo> using namespace QtMobility; int main(int argc, char *argv[]) { QApplication app(argc, argv); QSystemInfo s; QLabel *label = new QLabel(QObject::tr("hello"). append(s.currentCountryCode())); label->show(); label->resize(100,30); return app.exec(); }
Teraz należy wyedytować plik z ustawieniami projektu *.pro dodając do niego następujące wpisy:
CONFIG += mobility MOBILITY += systeminfo
Aby zapisać wszystkie wprowadzone zmiany najlepiej skorzystać z menu Plik → Zachowaj wszystko.
Przed uruchomieniem przygotowanej aplikacji należy najpierw przejść do zakładki Projekty i tam na zakładce Produkty docelowe wybrać MeeGo i Uruchom.
Tutaj należy określić jedynie Device configuration, gdzie powinniśmy wskazać na skonfigurowane wcześniej środowisko uruchomieniowe (jak to zrobić pisałem we wpisie "MeeGo SDK - Konfiguracja Qt Creator", w sekcji "Dostęp do środowiska uruchomieniowego MeeGo"). U mnie to jest akurat: MeeGo NetBook Emulator. Oczywiście należy pamiętać o tym, aby wystartować wybrane środowisko uruchomieniowe MeeGo. Możemy to zrobić wpisując w konsoli polecenie tego typu:
sudo mad remote -r meego-netbook-ia32-qemu-1.1.2-runtime poweron
Po tym wszystkim możemy uruchomić projekt klikając na zielony "trójkącik" symbolizujący start aplikacji. Prawdopodobnie w konsoli Qt Creatora zobaczymy komunikat podobny do tego:
Cleaning up remote leftovers first ...Teoretycznie teraz powinniśmy zobaczyć w testowym środowisku MeeGo wystartowaną aplikację. Ja niestety na pierwszy rzut oka nie dostrzegłem żadnych zmian. Po kilku kliknięciach w interfejs zauważyłem, że aplikacja jest jednak uruchomiona, ale znajduje się "w tle". Aby zobaczyć ją na pełnym ekranie wystarczy kliknąć na pierwszą zakładkę - tą z domkiem, symbolizującą strefę MyZones (widać to na rysunku poniżej).
Initial cleanup done.
Files to deploy: /home/rafal/qthello-build-meego/rrpmbuild/qthello-0.0.1-1.i586.rpm.
Deployment finished.
Starting remote application.
access control disabled, clients can connect from any host
Could not find Hal
Could not find Hal
Teraz już powinniśmy zobaczyć naszą pierwszą mobilną aplikację dla MeeGo :-D :
Czy miałem podczas wykonywania tych kroków jakieś błędy? Tak, był jeden, ale był on związany z tym, że próbowałem uruchomić aplikację w Qt Creatorze nie mając wcześniej wystartowanego środowiska testowego. Dostałem wówczas taki komunikat:
Cleaning up remote leftovers first ...Jeśli będą pojawiać się inne komunikaty i inne błędy, polecam najpierw upewnić się, że Qt Creator poprawnie łączy się z środowiskiem uruchomieniowym MeeGo. Można to sprawdzić przechodząc odpowiednio do Narzędzia → Opcje → Projekty → MeeGo Device Configuration i tam wybierając z listy wcześniej przygotowaną konfigurację możemy skorzystać z opcji Test. Jeśli tutaj wszystko pójdzie OK, nie powinno być problemów z wystartowaniem aplikacji.
Error running initial cleanup: Nie można połączyć się z hostem.
Mamy już pierwszą aplikację. Co dalej? Czekam na sugestie czytelników o czym chcieli by poczytać :-).