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

Post on 26-Mar-2015

252 views 0 download

Tags:

Transcript of Qt for Android (and Symbian) Tam Hanna tamhan@tamoggemon.com @tamhanna.

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 AndroidWhat 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 startedGetting 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– 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 gotchasPorting 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)

webOSwebOS

Why develop for it?

• Not dead yet– GRAM– Cooperation with LG planned

• Unofficial Qt port

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

ConclusionConclusion

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

Thanks !

?!? - !?!

tamhan@tamoggemon.com

@tamhanna

Pictures from :