niedziela, 1 sierpnia 2010

Qt Quick na Symbianie

Za jedną z najciekawszych technologii uważam QtQuick. Jest to nowy język opisu interfejsu graficznego wzorowany na CSS 3. Składa się z biblioteki Declarative i z języka QML. Ale mnie najbardziej zastanawiało jak będzie można programować w tym pod Symbianem. Przeczuwałem że mogą być problemy z tego powodu że Qt Quick tak naprawdę nie potrzebuje kompilacji kodów, więc przypominało mi to sytuację z programowaniem na Pythona czy m-shell. Wystarczy skompilować program qmlviewer i prawie wszystkie programy Qt Quick uruchamiać przez niego. Ale pomyślałem że takie rozwiązanie to przeczy zasadom bezpieczeństwa w Symbiaznie. Zaintrygowany  postanowiłem sprawdzić jak to rozwiązano.

Ściągnąłem Qt 4.7 beta 2 na Symbiana i zainstalowałem to na wirtualnym Windows XP.pod taką ścieżką C:\Qt\4.7.0.b2. Postanowiłem sprawdzić jak pójdzie mi kompilacja z linii poleceń.
Jest w menu Start -> Programy-> Qt for Symbian by Nokia v4.7.0-beta2 (S60) -> Qt for Symbian Command Prompt. Uruchomiłem to ale zaciekawiony byłem co to za skrót i okazało się że wykonuje on takie działanie: C:\WINDOWS\system32\cmd.exe /K C:\Qt\4.7.0.b2\bin\qtenv.bat Pojawiło mi się czarne okno do  wpisywania z linii poleceń. Napisałem tak

cd C:\Qt\4.7.0.b2\tools\qml

byłem już w folderze programu qml wpisałem

qmake

Wygenrowało mi pliki abld.bat, makefile i jak *.mmp. Postanowiłem najpierw zobaczyć jak dziala w emulatorze i wpisałem

make debug-winscw

zrobiło mi binarną wersję na emulatora i pozostało mi uruchomić. Wpisałem

make run

po jakimś czasie emulator uruchomił się z tym programem. Ale zreflektowałem się że w emulatorze nie mam plików z QtQuick. Zamknąłem emulator i przegrałem zawartość z folderu C:\Qt\4.7.0.b2\examples\declarative\animation do folderu C:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\winscw\c\animation i uruchomiłem jeszcze raz emulator poleceniem

make run

i uruchomił mi sie program co sprawiło że mogłem wybrać ścieżkę do uruchomienia c:/animation/basic/color-animation.qml i zadziałało. No to teraz skompiluję qml na moją komórkę XM5800
Najpierw doinstalowywałem na kartę pamięci komórki następujące biblioteki w tej kolejności
C:\Qt\4.7.0.b2\qt_installer.sis
C:\Qt\4.7.0.b2\qt.sis
C:\Qt\4.7.0.b2\qtwebkit.sis
C:\Qt\4.7.0.b2\qt_demos.sis
C:\Qt\4.7.0.b2\fluidlauncher.sis

Po zainstalowaniu pomdlałem że znajdę jakieś programy typu oparte na QML. i zalazłem w folderze QtDemos takie jak qmlcalculator, qmlclocks, qmldialcontrol, qmleasing, qmlflickr, qmlphotoviewer, qmltwitter. Gdy uruchomiłem  qmldialcontrol to zauważyłem że zmiana położenia komórki blokuje program. doszedłem do wniosku że te programy wykorzystujące QML są jakby osadzone. To spróbuję skompilować na komórkę QML. Wróciłem do okna linii poleceń i wpisałem

make  release-gcce

i skompilowało się. Pozostało zrobić paczkę i wpisałem, żeby zrobiło mi paczkę bez podpisu

set QT_SIS_OPTIONS=-u

a potem

make sis

i pojawił się taki komunikat:


Auto-patching capabilities for self signed package.

Patching package file and relevant binaries...

Executing elftran -vid 0x0 -capability "NetworkServices ReadUserData" /S60/devic
es/S60_5th_Edition_SDK_v1.0/epoc32/release/gcce/urel/qmlviewer_patched_caps.exe

NOTE: A patched package should not be used for distribution!

Processing qmlviewer_release-gcce.pkg...
Created  qmlviewer_unsigned.sis.


Wygląda na to że nie można używać programu qmlviewer w dystrybucji.
Podpisałem swoim certyfikatem

signsis -s qmlviewer_unsigned.sis qmlviewer.sisx c:\key\imobile.cer c:\key\imobile.key 

Po zainstalowaniu tego okazało się że nie działa tak jak bym się spodziewał. Uruchamia się ale nie można wybrać żadnego pliku QML a nagłówek tytułowy wskazuje na plik zasobów content/Browser.qml, który nie mógł zostać uruchomiony z powodu restrykcji z dostępem do plików w Symbianie. Zrozumiałem że po zaprogramowaniu plików QML trzeba będzie pakować je w pliki zasobów oraz osadzać je jakby wewnątrz programu. Ale jak? Pewną wskazówkę dawały mi przykłady

C:\Qt\4.7.0.b2\demos\embedded\qmlcalculator
C:\Qt\4.7.0.b2\demos\embedded\qmlphotoviewer
C:\Qt\4.7.0.b2\demos\embedded\qmltwitter

Testowałem tworzenie takich paczek z powyższymi przykładami. Wyglądało to obiecująco ale nie do końca.
Nie wiem jak będę tworzył pliki QML z kodowaniem unicode (utf-8), bo przykłady dotyczą kodowania Latin1. Zauważyłem też że przestają przykłady działać jak zmieni się orientację W sumie to można już myśleć o pisaniu kolejnego artykułu o tym jak zaprogramować własną aplikację Qt Quick, pomimo że to jest jeszcze wersja beta 2 i będziemy jeszcze czekać na wersję Qt 4.7 RC

Brak komentarzy: