Qt na Symbianu

By Jozef Mlích - Last updated: Friday, June 8, 2012 - Save & Share - 2 Comments

Všichni asi ví, že Nokia N9 s operačním systémem MeeGo Harmattan je jediný telefon svého druhu a žádný další telefon se tímto systémem Nokia neplánuje. Často mi vývojáři říkají, že nemá smysl vyvíjet pro jeden telefon. Pravdou ale je, že většinu aplikací z MeeGo Harmatanu je možné velmi snadno naportovat na telefony se Symbian Anna a Belle.

Ze statistik u mých programů vyplývá, že stahovanost aplikace pro MeeGo Harmattan je 10% a zbytek přibližně napůl pro Symbian Anna a Belle. Z hlediska programování v Qt nedává velký smysl rozlišovat mezi Symbian Anna a Symbian Belle. Hlavní odlišnosti je grafické téma systému. Co se týče rozdělení podle hardware, tak vede Nokia N8 (cca 50% instalací), pak N9, C7, E7, 500, 700 a E6.

Pro samotný vývoj je dobré začít hello world. Qt SDK pro Windows obsahuje všechny potřebné komponenty pro Symbian. Stačí vytvořit projekt pro symbian, přidat příslušnou cílovou platformu v Qt Creatoru, připojit telefon nainstalovat a spustit CODA Agenta a dát „Play“.

CODA je Carbide.c++ On-device Debugging Agent. Jeho instalace do telefonu spočívá v jednom kliknutí do nabídky start na počítači. CODU je možné do telefonu nakopírovat i ručně a nainstalovat jako každý jiný sis balíček.. Sluší se dodat, že celé Qt na Symbianu je wrapper nad původním API a některé věci se bez něj nedají udělat. Existuje i další debugging agent, který se jmenuje TRK, jeho používání se v současnosti nedoporučuje.

Pro překlad programu a vytvoření balíčku pro Symbian na Linuxu je situace složitější. Je možné nainstalovat si Symbian Qt SDK for Linux, což nemusí být úplně jednoduché. Další možností je použít Remote Compiler, kdy se pro vytvoření balíčku celý zdroják pošle na vzdálený server a tam se přeloží zvolenou verzí Qt, vyrobí se příslušný balíček, pošle zpět a následně se zobrazí chyby při překladu.

Tento balíček se nainstaluje do telefonu a tam se spustí. V případě, že se balíček nespouští přes CODA Agenta, ale ručně, tak pochopitelně nejsou vidět chyby v QML.

Při vytváření balíčku pro Symbian je potřeba upravit projekt (.pro) tak, aby v něm byly uvedeny potřebné zavislosti (target.capability a config qt-components). Dále se nepoužívá .desktop soubor pro vytvoření ikonky do menu, takže je potřeba tyto údaje doplnit sem (icon, version, deployment.display_name). Asi nejzáhadnější položkou zde je TARGET.UID3. Pro odeslání aplikace do Ovi Store je potřeba požádat pro každou aplikaci o nové UID. Pro účely testování postačí vygenerované UID.

symbian {
TARGET = "skyguide_FFFFFFFA" # pro zveřejnění je potřeba přidat do jména aplikace i UID
TARGET.UID3 = 0xFFFFFFFA # from OVI
ICON = "skiguide.svg"
VERSION = 0.0.7
DEPLOYMENT.display_name = Ski guide
TARGET.CAPABILITY += NetworkServices Location
TARGET.CAPABILITY += SwEvent
# workaround: http://bugreports.qt.nokia.com/browse/QTBUG-8336
my_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += my_deployment
vendorinfo += "%{\"\"}" ":\"xmlich02\""
}

# Add dependency to Symbian components
CONFIG += qt-components

Při instalaci aplikace je nutné se zabývat i tím zda je na zařízení Qt vůbec nainstalované a v jaké verzi. Toto závisí na typu zařízení. Pro doinstalování potřebné verze Qt se při vytváření balíčku zaškrtne „Smart Installer“, který při prvním spuštění doinstaluje potřebné knihovny. Pro ladění aplikace je ovšem naopak vhodné Smart Installer po prvním nainstalování do balíčku nepřidávat, protože potom se k nám nemusí dostat ladící výpisy v programu.

Co se týče samotného vývoje programu, tak je Qt u MeeGo i Qt u Symbianu jsou z velké části shodné.

Nejvíc rozdílů je asi v qt-components. Jedná se o drobnosti, které programátorovi znepříjemňují život.

Qt components jsou v rozdílných namespace (M je pro MeeGo Harmattan a S je pro Symbian).
(M) import com.nokia.meego 1.0
(S) import com.nokia.symbian 1.1

Tlačítko, které je součástí komponenty ToolBarLayout v Page
(M) ToolIcon { platformIconId: "toolbar-back" }
(S) ToolButton { iconSource: "toolbar-back" }

Dále je nutné počítat s tím, že MeeGo Harmattan používá pro ukončení aplikace SWIPE, tedy gesto, kdy se přejede přes okraj aplikace. V aplikaci pro Symbian je nutné vhodně přidat ukončovací tlačítko.

Komponenta BusyIndicator a další komponenty neznají platformStyle, v tomto případě to lze vyřešit nastavením nějaké rozumné velikosti.
BusyIndicator {
(M) platformStyle: BusyIndicatorStyle { size: "large" }
(S) width: 70; height: 70;
}

Co se týče využívání “invertedStyle”, tak je rovněž nutné poznamenat, že v symbianu mají některé komponenty nastavené tmavý styl jako výchozí. V případě, že má telefon AMOLED displej, tak to má pozitivní vliv na spotřebu energie.
(M) Button { platformStyle: ButtonStyle { inverted: true } }
(S) Button { /* platformStyle: ButtonStyle { inverted: true } */ }

Taky je nutné počítat s tím, že Symbian nepoužívá libcontentaction, takže pro spuštění navigace se použije například následující kód:
(M) Qt.openUrlExternally("geo:"+model.lat+","+model.lng)
(S) Qt.openUrlExternally("http://m.ovi.me/?c="+model.lat+","+model.lng);

Rovněž integrace sociálních sítí je řešena jiným způsobem, takže pro vytvoření tlačítka „sdílet na facebook“ se zřejmě nepoužije shareuiinterface-maemo-meegotouch, ale něco jiného.

Ve chvíli, kdy program odladíme na jednom zařízení, tak je vhodné program otestovat i na dalším zařízení. K tomu je možné využít službu Remote Device Access. Vývojář si přes webovou stránku rezervuje potřebný čas na zařízení a následně přes jws (java web start) spustí konzoli pro vzdálený přístup (vnc), která umožňuje navíc instalovat balíčky na zařízení, přenášet soubory na zařízení a restartovat zařízení.

Pro ladění je možné použít i simulátor integrovaný do vývojového prostředí Qt Creatoru. Simulátor je nutné přepnout na symbian. Toto se provede v simulátoru v menu Application se v Choose com.nokia.extras platform zvolí varianta Symbian.

Pro následné zveřejnění aplikace v Ovi Store je potřeba emailem požádat o UID, a potom pomocí Build a Publish vytvořit  balíček, který se následně nahraje do Ovi Store.

Sdílejte:

Share this:

Posted in MeeGo, Vývoj • Tags: , , , Top Of Page

2 Responses to “Qt na Symbianu”

Comment from Andrej Repisky
Time 14. 11 2012 at 19:30

Bohužel Nokia asi před týdnem zrušila servery s Remote Compilerem a nikomu se nenamáhala to sdělit. Nejede mi to ani ve Windows. Další informace jsou např. tady: http://www.developer.nokia.com/Community/Discussion/showthread.php?237054-Qt-Remote-Compiler-authentication-does-not-work&p=905777#post905777

Comment from Jozef Mlích
Time 15. 11 2012 at 20:23

Duvodem byla zmena systemu prihlasovani na vsechny stranky nokie na microsofti single-sign-on metodu. Soucasne s tim prestal fungovat plugin do qt creatoru. Jeho autori sice vyrobili docela rychle opravu, ale ta se do oficialni verze nejak nedostala. V Qt Creatoru 2.6 byla podpora remote compileru zrusena uplne.

Write a comment


Yandex Mail.ru Google LiveJournal myOpenId Flickr claimId Blogger Wordpress OpenID Yahoo Technorati Vidoop Verisign AOL