Qt for Android (and Symbian) Tam Hanna [email protected] @tamhanna.

60
Qt for Android (and Symbian) Tam Hanna [email protected] @tamhanna

Transcript of Qt for Android (and Symbian) Tam Hanna [email protected] @tamhanna.

Page 1: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Qt for Android (and Symbian)

Tam Hanna

[email protected]

@tamhanna

Page 2: 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

Page 3: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Overview

• Qt for Android (focus)

• Qt for– Symbian– MeeGo– TiZen– webOS

• Wrap-up

Page 4: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

What is AndroidWhat is Android

Page 5: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Largest mobile OS by share

Android

iOS

BB

Symbian

Windows

Linux

Data: IDC 2012, Market Share Q3

Page 6: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Android is open

• Runs ANY app– If user enables it– 50 000 app stores

• No permission model– User is NOT root

Page 7: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Android is Java

• Apps run in special VM called DALVIK– Pretty high performance

• But: NDK is available– Allows use of C++ code

Page 8: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Android is „fragmented“

• Many vendors– Different form factors

• Many stores– Many back-ends

• Analyst buzzword– Low practical relevance – like PalmOS

Page 9: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Qt for Android

Page 10: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Community-driven port

• Started by Bogdan Vatra– 2011

• „Aquired“ by KDE– Provides server infrastructure, etc

• No support from Nokia– Digia mentioned in press release

Page 11: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.
Page 12: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

LightHouse

Page 13: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Getting startedGetting started

Page 14: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Supported platforms

• Linux (Ubuntu 10.4 +)

• Mac OS

• Windows

• Speaker recommends: Linux

Page 15: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Getting started

• Install Ant 1.8 and OpenJDK

• sudo apt-get install ant

• sudo apt-get install openjdk-6-jdk

Page 16: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

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

Page 17: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Automatic deployment

• Tool fetches SDK• „One Click Install“

Page 18: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Starting Necessitas

• tamhan@ubuntu:~$ cd NecessitasQtSDK/

• tamhan@ubuntu:~/NecessitasQtSDK$ cd QtCreator/

• tamhan@ubuntu:~/NecessitasQtSDK/QtCreator$ cd bin

• tamhan@ubuntu:~/NecessitasQtSDK/QtCreator/bin$ sudo ./necessitas

Page 19: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Internal architecture

Page 20: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Library versioning

• Qt is updated frequently– Legal reasons– Downward compatibility is pretty good

• Qt is large– 7MB binary, or more– Memory is limited

Page 21: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Solution: Ministro

• Sits in app stores

• Auto-downloads libraries to device

Page 22: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Overview

Page 23: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

GUI sniffing

Page 24: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

GUI sniffing - II

Page 25: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Input

Page 26: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.
Page 27: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Project-speficic settings

Page 28: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Configure baseline

Page 29: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Application optics

Page 30: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Permissions

Page 31: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Permissions - II

• Signify what app does

• Help user decide

Page 32: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Libraries

Page 33: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Signing

Page 34: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Signing - II

• Android Signing verifies producer

• This binary is from workstation A

• NO rights / trust transfer except for update

Page 35: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Library management

Page 36: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Porting gotchasPorting gotchas

Page 37: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Definitions

Page 38: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

File includes

• All include paths are based on /.pro

Page 39: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Includes

• #include <qDebug>

• #include <QDebug>

Page 40: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

gcc gotchas

Page 41: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Specific eekers

• Native code bits?

• Platform-specific files

• .pro.user files

• Soft keys?

Page 42: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.
Page 43: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Why develop for Symbian

• Symbian is DEAD

• But: devices still in circulation– Top especially in Latin America

Page 44: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

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

Page 45: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Ovi Store - I

• Ovi Store can drive huge volume– 1 million downloads => no issue

• VERY low conversion rates– 1:1000 or less

Page 46: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Ovi Store - II

• Limited device reach for Qt content

• Not every Qt-capable device is enabled

• Forget Ovi for China– 3 cents / Dollar

Page 47: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Ovi Store - III

• DL/t for game

Page 48: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Ovi Store - III

• DL/t for app

Page 49: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

MeeGo

Page 50: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Dead platform

• N900 and N9 sold decently well– Few thousand technically savvy users

• Jolla plans Chinese device

• But: good tooling

Page 51: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

TiZen

Page 52: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

What is it?

Page 53: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

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)

Page 54: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

webOSwebOS

Page 55: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Why develop for it?

• Not dead yet– GRAM– Cooperation with LG planned

• Unofficial Qt port

• http://www.webos-internals.org/wiki/HowtoQt

Page 56: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

ConclusionConclusion

Page 57: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

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

Page 58: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Mindshare is everything

Page 59: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Qt saves time

• Develop once, deploy multiple times– Increase mindshare– Increase market presence– More revenue

• Worst case: redo GUI with QML

Page 60: Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

Thanks !

?!? - !?!

[email protected]

@tamhanna

Pictures from :