Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna About /me • Tam HANNA – CEO, Tamoggemon Ltd. – Runs web sites about mobile computing – Writes scientific books Overview • Qt for Android (focus) • Qt for – Symbian – MeeGo – TiZen – webOS • Wrap-up What is Android Largest mobile OS by share Android iOS BB Symbian Windows Linux Data: IDC 2012, Market Share Q3 Android is open • Runs ANY app – If user enables it – 50 000 app stores • No permission model – User is NOT root Android is Java • Apps run in special VM called DALVIK – Pretty high performance • But: NDK is available – Allows use of C++ code Android is „fragmented“ • Many vendors – Different form factors • Many stores – Many back-ends • Analyst buzzword – Low practical relevance – like PalmOS Qt for Android Community-driven port • Started by Bogdan Vatra – 2011 • „Aquired“ by KDE – Provides server infrastructure, etc • No support from Nokia – Digia mentioned in press release LightHouse Getting started Supported platforms • Linux (Ubuntu 10.4 +) • Mac OS • Windows • Speaker recommends: Linux Getting started • Install Ant 1.8 and OpenJDK • sudo apt-get install ant • sudo apt-get install openjdk-6-jdk Graphical set-up • http://necessitas.kde.org/necessitas/neces sitas_sdk_installer.php • chmod +x linux-online-necessitasalpha4.1-sdk-installer • sudo ./linux-online-necessitas-alpha4.1sdk-installer Automatic deployment • Tool fetches SDK • „One Click Install“ Starting Necessitas • tamhan@ubuntu:~$ cd NecessitasQtSDK/ • tamhan@ubuntu:~/NecessitasQtSDK$ cd QtCreator/ • tamhan@ubuntu:~/NecessitasQtSDK/QtCr eator$ cd bin • tamhan@ubuntu:~/NecessitasQtSDK/QtCr eator/bin$ sudo ./necessitas Internal architecture Library versioning • Qt is updated frequently – Legal reasons – Downward compatibility is pretty good • Qt is large – 7MB binary, or more – Memory is limited Solution: Ministro • Sits in app stores • Auto-downloads libraries to device Overview GUI sniffing GUI sniffing - II Input Project-speficic settings Configure baseline Application optics Permissions Permissions - II • Signify what app does • Help user decide Libraries Signing Signing - II • Android Signing verifies producer • This binary is from workstation A • NO rights / trust transfer except for update Library management Porting gotchas Definitions File includes • All include paths are based on /.pro Includes • #include <qDebug> • #include <QDebug> gcc gotchas Specific eekers • • • • Native code bits? Platform-specific files .pro.user files Soft keys? Why develop for Symbian • Symbian is DEAD • But: devices still in circulation – Top especially in Latin America Development options • Carbide – – – – Eclipse-based Mature IDE Limited to 4.6.3 Can not debug well • Qt Creator – Decent integration – Debugs well – Qt SDK auto-deploys toolkit Ovi Store - I • Ovi Store can drive huge volume – 1 million downloads => no issue • VERY low conversion rates – 1:1000 or less Ovi Store - II • Limited device reach for Qt content • Not every Qt-capable device is enabled • Forget Ovi for China – 3 cents / Dollar Ovi Store - III • DL/t for game Ovi Store - III • DL/t for app MeeGo Dead platform • N900 and N9 sold decently well – Few thousand technically savvy users • Jolla plans Chinese device • But: good tooling TiZen What is it? Will it be in v1? • SDK for V1 is said to be web-only • However, Qt is used internally • C/C++ runtime might be around (bada) webOS Why develop for it? • Not dead yet – GRAM – Cooperation with LG planned • Unofficial Qt port • http://www.webosinternals.org/wiki/HowtoQt Conclusion Mobile is fragmented • Multiple platforms – Battle for mindshare and – Winner is yet undecided • C++ is common base line – C++ is everywhere – Even on iOS and Windows Phone 8 Mindshare is everything Qt saves time • Develop once, deploy multiple times – Increase mindshare – Increase market presence – More revenue • Worst case: redo GUI with QML Pictures from : Thanks ! ?!? - !?! tamhan@tamoggemon.com @tamhanna