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 Wrap-up Symbian MeeGo TiZen webOS Wrap-up
What is Android
Largest mobile OS by share Data: IDC 2012, Market Share Q3
Android is open Runs ANY app No permission model 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/necessitas_sdk_installer.php chmod +x linux-online-necessitas-alpha4.1-sdk-installer sudo ./linux-online-necessitas-alpha4.1-sdk-installer
Automatic deployment Tool fetches SDK „One Click Install“
Starting Necessitas tamhan@ubuntu:~$ cd NecessitasQtSDK/ tamhan@ubuntu:~/NecessitasQtSDK$ cd QtCreator/ tamhan@ubuntu:~/NecessitasQtSDK/QtCreator$ cd bin tamhan@ubuntu:~/NecessitasQtSDK/QtCreator/bin$ sudo ./necessitas
Internal architecture
Library versioning Qt is updated frequently Qt is large 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 Qt Creator 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 Unofficial Qt port GRAM Cooperation with LG planned Unofficial Qt port http://www.webos-internals.org/wiki/HowtoQt
Conclusion
Mobile is fragmented Multiple platforms C++ is common base line 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
?!? - !?! tamhan@tamoggemon.com @tamhanna Pictures from : Thanks ! ?!? - !?! tamhan@tamoggemon.com @tamhanna