the slides - Qt Developer Days 2014 Europe

Download Report

Transcript the slides - Qt Developer Days 2014 Europe

Qt for Android (and Symbian)
Tam Hanna
[email protected]
@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 !
?!? - !?!
[email protected]
@tamhanna