Necessitas
 Qt on Android

   Johan Thelin
    Pelagicore
Biography
●   Johan Thelin


●   Worked with Qt for 10+ years
●   Foundations in Qt Development
●   Also worked embedded, embedded Linux, enterprise software, web



●   Today – senior developer at Pelagicore
Pelagicore
●   Open source based in-vehicle infotainment
    ●   Member of Linux Foundation
    ●   Ubuntu Core member
    ●   GENIVI member
    ●   Active within MeeGo, etc


●   Uses Qt and QtQuick extensively
    ●   Also HTML5, JavaScript and Android
What is Qt

        “Code less, create more, deploy everywhere”

●   A great framework for creating applications
●   Truly cross-platform
    ●   Desktop
    ●   Devices
●   Licensed for everyone – GPL, LGPL or closed
Qt on Desktop




●   X11
●   OS X
●   Windows
Qt on Devices
●   Linux with X11
    ●   N900, N9
●   Linux without X11
    ●   industrial, etc
●   Symbian
●   WinCE

●   more...
Who runs Qt?
●   Trolltech
●   Bought by Nokia
●   Nokia Qt Development Frameworks


●   Digia develops and licenses Qt Commercial


●   Qt is open source – www.qt-project.org
●   True open governance!
Qt on Devices
●   More than the official ports
    ●   Android


    ●   RIM Blackberry
    ●   WebOS
    ●   iOS
    ●   Kindle


    ●   WP7 can support native code mid-2012 :-)
Qt on Devices
●   More verticals
    ●   Set-top boxes
    ●   Industrial panels
    ●   Tablets

    ●   Your car
Finding the Roots of Qt




        Backends
Backends
●   Backends for OS primitives
    ●   Atomic operations, files, etc
●   Backends for graphics rendering
    ●   Soft, OpenGL, OpenGL ES, GDI, etc
●   Backends for image handling
●   Backends for accessibility
●   Backends for ...
Why Backends




  Portability!
Portability between Devices
●   QPA – Qt Platform Architecture – or something
    ●   Formerly known as Lighthouse


●   A backend for porting Qt to new platforms
    ●   Focused at minimal effort, but with possibilities
Qt on Android
●   Based on Android SDK / NDK
●   QPA
    ●   Necessitas - the actual Qt Port
●   QtCreator (IDE) adaptations
    ●   The tooling
●   Ministro
    ●   The deployment
Current Status
●   Alpha 3 was just released
    ●   Most of Qt is ported
    ●   OpenGL rendering
    ●   WebKit


●   Missing
    ●   Mobility (for many Android Versions)
    ●   Rewriting soft keyboard support
    ●   Android Style and Android Menus
    ●   Development support in non-Linux environments
    ●   Documentation
The Near Future
●   Planning to release First Beta soon
    ●   Will give a stable API/ABI


“...meaning that an application which uses that version will
 run without *any* change, on any further releases! It also
means you can target a billion devices using Qt, much sooner
                   than you expected :)”
Getting Started
●   Installation party!
    ●   OpenJDK
    ●   ant 1.8+
    ●   The necessitas installer downloads and installs
        –   Android SDK + NDK
        –   Platforms for the SDK, etc
    ●   Setup QtCreator
        –   Add path to ant
Installer
Demo Application
Demo Application
●   Strip out some of the crud from the template
    source code – it refers to Symbian
Demo Application
void MainWindow::on_pushButton_clicked()
{
    static int v = 0;
    ui->listWidget->addItem(
        QString("Value%1").arg(v++));
}
Demo Application
Demo Application
 ●   From project directory
$ ls -l android/bin/
total 1988
-rw-rw-r-- 1 e8johan   e8johan    179 2011-11-10 21:42 build.prop
drwxrwxr-x 3 e8johan   e8johan   4096 2011-11-10 21:42 classes
-rw-rw-r-- 1 e8johan   e8johan 33396 2011-11-10 21:42 classes.dex
-rw-rw-r-- 1 e8johan   e8johan   2251 2011-11-10 21:42 classes.dex.d
drwxrwxr-x 6 e8johan   e8johan   4096 2011-11-10 21:42 res
-rw-rw-r-- 1 e8johan   e8johan 431594 2011-11-10 21:42 Widgetdemo.ap_
-rw-rw-r-- 1 e8johan   e8johan   2045 2011-11-10 21:42 Widgetdemo.ap_.d
-rw-rw-r-- 1 e8johan   e8johan 767735 2011-11-10 21:42 Widgetdemo-debug.apk
-rw-rw-r-- 1 e8johan   e8johan 767731 2011-11-10 21:42 Widgetdemo-debug-unaligned.apk
-rw-rw-r-- 1 e8johan   e8johan    305 2011-11-10 21:42 Widgetdemo-debug-unaligned.apk.d
First Run on Phone
●   Installs Ministro – Installs Qt – Resumes
    https://market.android.com/details?id=eu.licentia.necessitas.ministro
Second Run



It simply works!
More on Ministro
●   Qt libraries are shared among all Qt apps on
    the device
●   From the beta release, the ABI is stable, i.e. Qt
    can be upgraded separately from apps
Configurability
●   Android target SDK
    ●   API levels
●   Application icon
●   Permissions
    ●   What your app wants to be able to do
●   Libraries
    ●   Which Qt modules are needed
●   More...
Debugging
●   Yes! :-)


●   Android NDK comes with gdb
    ●   Works with QtCreator
●   Requires some tweaking
    ●   Described in the Necessitas Wiki
Qt and Device UIs




 Got to show you this!
User Interface Development
●   Classic – standard widgets, etc
    ●   Rectangular areas
    ●   Non-overlapping
    ●   Clipping their children
    ●   Provides familiarity


●   Device UIs
    ●   Blend with the device
    ●   Provide a brand feel
    ●   etc
Building Modern UIs
●   No more widgets!
    ●   Canvas / scene
●   Timers everywhere
●   Multiple simultaneous transitions
●   Complex, interconnected state machines


●   Pain! :-)
History of Qt and Modern UIs
●   QCanvas
●   QGraphicsView
●   QTimeLine
●   QGraphicsItemAnimation
●   An animation framework
●   A state machine framework
●   The birth of QtQuick
QtQuick
●   What is QtQuick?
    ●   A run-time for QML
    ●   Tooling


●   What is QML
    ●   Declarative
    ●   JavaScript
QML
import QtQuick 1.0


Rectangle {
    Rectangle {
        MouseArea {
        }
    }
}
QML
Rectangle {
  width: 500
  height: 500


  Rectangle {
QML
Rectangle {
  Rectangle {
    id: box


    color: "red"
    width: 100
    height: 100
    x: 200
QML
MouseArea {
    anchors.fill: parent


    onClicked: {
        if(box.state=="up")
          box.state="down";
        else
          box.state="up";
    }
}
QML
Rectangle {
  state: "up"
  states: [
      State {
           name: "up"
           PropertyChanges { target: box; y: 50 }
      },
      State {
           name: "down"
           PropertyChanges { target: box; y: 350 }
      }
  ]
Demo
QML
Behavior on y {
    PropertyAnimation {
        duration: 1000
        easing.type: Easing.OutBounce
    }
}
Demo
Integrate with C++
●   QObjects to QtQuick
        QObject *foo = …;
        setProperty(“foo”, foo);


●   C++ classes in QtQuick
        class Foo : public QObject { … };
        qmlRegisterType<Foo>("FooLib", 1, 0, "Foo");
        Foo { property: value }



●   QtMediaHub - http://gitorious.org/qtmediahub
QtMediaHub
Of course QtQuick works on Android too.
  With hardware accelerated graphics.
Qt 5
●   A great opportunity to …
    ●   … get rid of API limitations
    ●   … split the repos into more independent parts
    ●   … take advantage of modern C++


●   Widgets and QML are peers
●   More acceleration, shaders, etc – amazing
    performance
A new Dawn
●   Truly Open Source – a www.qt-project.org
●   Qt for Desktop
    ●   Windows / X11 / OS X... more
●   Qt for Devices
    ●   Symbian / Maemo / MeeGo / Android / Blackberry /
        iOS / Kindle... more
Thank you!

 johan.thelin@pelagicore.com



           We're hiring!
http://pelagicore.com/career.html

More Related Content

ODP
Cross Platform Qt
ODP
Qt Workshop
PDF
Building the QML Run-time
PDF
State of the Art OpenGL and Qt
 
PPTX
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
 
PDF
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
PPTX
Qt for beginners part 1 overview and key concepts
 
PDF
Qt for Beginners Part 3 - QML and Qt Quick
 
Cross Platform Qt
Qt Workshop
Building the QML Run-time
State of the Art OpenGL and Qt
 
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt for beginners part 1 overview and key concepts
 
Qt for Beginners Part 3 - QML and Qt Quick
 

What's hot (20)

PDF
QThreads: Are You Using Them Wrong?
 
PDF
Qt Internationalization
 
PDF
Qt for beginners part 2 widgets
 
ODP
Treinamento Qt básico - aula I
PDF
Best Practices in Qt Quick/QML - Part 3
 
PDF
A Brief Introduction to the Qt Application Framework
PPTX
Qt for beginners part 5 ask the experts
 
PDF
Qt and QML performance tips & tricks for Qt 4.7
PDF
Qt Widget In-Depth
ODP
Qt 5 - C++ and Widgets
PDF
Optimizing Performance in Qt-Based Applications
ODP
Intro to QML / Declarative UI
PDF
Migrating from Photon to Qt
PDF
So I Downloaded Qt, Now What?
PPTX
Hello, QML
ODP
Treinamento Qt básico - aula II
PPT
Opengl (1)
PDF
Meet the Widgets: Another Way to Implement UI
 
PDF
OpenGL Introduction.
PDF
QVariant, QObject — Qt's not just for GUI development
 
QThreads: Are You Using Them Wrong?
 
Qt Internationalization
 
Qt for beginners part 2 widgets
 
Treinamento Qt básico - aula I
Best Practices in Qt Quick/QML - Part 3
 
A Brief Introduction to the Qt Application Framework
Qt for beginners part 5 ask the experts
 
Qt and QML performance tips & tricks for Qt 4.7
Qt Widget In-Depth
Qt 5 - C++ and Widgets
Optimizing Performance in Qt-Based Applications
Intro to QML / Declarative UI
Migrating from Photon to Qt
So I Downloaded Qt, Now What?
Hello, QML
Treinamento Qt básico - aula II
Opengl (1)
Meet the Widgets: Another Way to Implement UI
 
OpenGL Introduction.
QVariant, QObject — Qt's not just for GUI development
 
Ad

Similar to Necessitas - Qt on Android - from FSCONS 2011 (20)

PDF
Migrating from Photon to Qt
 
PDF
Targeting Android with Qt
PDF
Network programming with Qt (C++)
PDF
Andreas Jakl Software Development on Nokia Deviceswith Qt
PDF
Plasmaquick Workshop - FISL 13
PDF
Qt for beginners part 4 doing more
 
PDF
Qt Automotive Suite - under the hood // Qt World Summit 2017
PDF
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
PDF
Qt Tutorial - Part 1
PDF
Qt for Python
 
PDF
Update on the open source browser space (16th GENIVI AMM)
PDF
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
PDF
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
PDF
Porting Motif Applications to Qt - Webinar
 
PDF
Porting Motif Applications to Qt - Webinar
PPTX
Green Custard Friday Talk 22: Flutter
PDF
Mp25: Mobile dev with QT and Python for the Notorious N9
PPT
Qt Technical Presentation
PDF
Programming for non tech entrepreneurs
Migrating from Photon to Qt
 
Targeting Android with Qt
Network programming with Qt (C++)
Andreas Jakl Software Development on Nokia Deviceswith Qt
Plasmaquick Workshop - FISL 13
Qt for beginners part 4 doing more
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Qt Tutorial - Part 1
Qt for Python
 
Update on the open source browser space (16th GENIVI AMM)
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
Porting Motif Applications to Qt - Webinar
 
Porting Motif Applications to Qt - Webinar
Green Custard Friday Talk 22: Flutter
Mp25: Mobile dev with QT and Python for the Notorious N9
Qt Technical Presentation
Programming for non tech entrepreneurs
Ad

Recently uploaded (20)

DOCX
FIFA World Cup Final Houston Prepares to Host an Unforgettable World Cup Expe...
PDF
Women in Cycling - Celebrating Pioneers and Champions
PDF
Uehehhehdhehehdjdjdjdjdjdjdjdjjdjdjdjdhdhdbdbdndndb
DOCX
FIFA World Cup Tickets Los Angeles Set to Shine with Snoop Dogg as Community ...
DOCX
The Heart of FIFA World Cup 2026 Volunteers.docx
DOCX
FIFA World Cup 2026 Tickets: Brazil Squad Announced for World Cup Qualifiers
PPTX
Football_Presentation.pptx football concepts
DOCX
Andrew Giuliani Named to Lead FIFA World Cup Task Force.docx
DOCX
Washington Set to Shine as Hosts of FIFA World Cup.docx
DOCX
NFL Dublin Vikings Part Ways Amid Blackmon’s Retrieval Struggle.docx
DOCX
World Cup Snoop Dogg Named Los Angeles Community Chairman for FIFA 2026.docx
PDF
How a Father and Angel City STH Considers Sports Fandom
PPTX
BASIC SPORTS NUTRITION, presentation from a doctor to UCSSC
PPTX
Iot proposal presentation base system an
DOCX
Canadian matches for World Cup draw heavy volunteer interest.docx
PPTX
VSSUT_NBA_Session_MBA-ncr ghaziabaduttar
PDF
FIFA 2026 Mexico expects to earn $3 billion from hosting the FIFA World Cup.pdf
PDF
Andrew Sheaff: Starts, Turns and Finishes
DOCX
Football World Cup Tickets: Italy’s World Cup Home Kit Marks 20th Anniversary...
DOCX
FIFA World Cup Vegas Chosen to Host Group Draw for Historic World Cup.docx
FIFA World Cup Final Houston Prepares to Host an Unforgettable World Cup Expe...
Women in Cycling - Celebrating Pioneers and Champions
Uehehhehdhehehdjdjdjdjdjdjdjdjjdjdjdjdhdhdbdbdndndb
FIFA World Cup Tickets Los Angeles Set to Shine with Snoop Dogg as Community ...
The Heart of FIFA World Cup 2026 Volunteers.docx
FIFA World Cup 2026 Tickets: Brazil Squad Announced for World Cup Qualifiers
Football_Presentation.pptx football concepts
Andrew Giuliani Named to Lead FIFA World Cup Task Force.docx
Washington Set to Shine as Hosts of FIFA World Cup.docx
NFL Dublin Vikings Part Ways Amid Blackmon’s Retrieval Struggle.docx
World Cup Snoop Dogg Named Los Angeles Community Chairman for FIFA 2026.docx
How a Father and Angel City STH Considers Sports Fandom
BASIC SPORTS NUTRITION, presentation from a doctor to UCSSC
Iot proposal presentation base system an
Canadian matches for World Cup draw heavy volunteer interest.docx
VSSUT_NBA_Session_MBA-ncr ghaziabaduttar
FIFA 2026 Mexico expects to earn $3 billion from hosting the FIFA World Cup.pdf
Andrew Sheaff: Starts, Turns and Finishes
Football World Cup Tickets: Italy’s World Cup Home Kit Marks 20th Anniversary...
FIFA World Cup Vegas Chosen to Host Group Draw for Historic World Cup.docx

Necessitas - Qt on Android - from FSCONS 2011

  • 1. Necessitas Qt on Android Johan Thelin Pelagicore
  • 2. Biography ● Johan Thelin ● Worked with Qt for 10+ years ● Foundations in Qt Development ● Also worked embedded, embedded Linux, enterprise software, web ● Today – senior developer at Pelagicore
  • 3. Pelagicore ● Open source based in-vehicle infotainment ● Member of Linux Foundation ● Ubuntu Core member ● GENIVI member ● Active within MeeGo, etc ● Uses Qt and QtQuick extensively ● Also HTML5, JavaScript and Android
  • 4. What is Qt “Code less, create more, deploy everywhere” ● A great framework for creating applications ● Truly cross-platform ● Desktop ● Devices ● Licensed for everyone – GPL, LGPL or closed
  • 5. Qt on Desktop ● X11 ● OS X ● Windows
  • 6. Qt on Devices ● Linux with X11 ● N900, N9 ● Linux without X11 ● industrial, etc ● Symbian ● WinCE ● more...
  • 7. Who runs Qt? ● Trolltech ● Bought by Nokia ● Nokia Qt Development Frameworks ● Digia develops and licenses Qt Commercial ● Qt is open source – www.qt-project.org ● True open governance!
  • 8. Qt on Devices ● More than the official ports ● Android ● RIM Blackberry ● WebOS ● iOS ● Kindle ● WP7 can support native code mid-2012 :-)
  • 9. Qt on Devices ● More verticals ● Set-top boxes ● Industrial panels ● Tablets ● Your car
  • 10. Finding the Roots of Qt Backends
  • 11. Backends ● Backends for OS primitives ● Atomic operations, files, etc ● Backends for graphics rendering ● Soft, OpenGL, OpenGL ES, GDI, etc ● Backends for image handling ● Backends for accessibility ● Backends for ...
  • 12. Why Backends Portability!
  • 13. Portability between Devices ● QPA – Qt Platform Architecture – or something ● Formerly known as Lighthouse ● A backend for porting Qt to new platforms ● Focused at minimal effort, but with possibilities
  • 14. Qt on Android ● Based on Android SDK / NDK ● QPA ● Necessitas - the actual Qt Port ● QtCreator (IDE) adaptations ● The tooling ● Ministro ● The deployment
  • 15. Current Status ● Alpha 3 was just released ● Most of Qt is ported ● OpenGL rendering ● WebKit ● Missing ● Mobility (for many Android Versions) ● Rewriting soft keyboard support ● Android Style and Android Menus ● Development support in non-Linux environments ● Documentation
  • 16. The Near Future ● Planning to release First Beta soon ● Will give a stable API/ABI “...meaning that an application which uses that version will run without *any* change, on any further releases! It also means you can target a billion devices using Qt, much sooner than you expected :)”
  • 17. Getting Started ● Installation party! ● OpenJDK ● ant 1.8+ ● The necessitas installer downloads and installs – Android SDK + NDK – Platforms for the SDK, etc ● Setup QtCreator – Add path to ant
  • 20. Demo Application ● Strip out some of the crud from the template source code – it refers to Symbian
  • 21. Demo Application void MainWindow::on_pushButton_clicked() { static int v = 0; ui->listWidget->addItem( QString("Value%1").arg(v++)); }
  • 23. Demo Application ● From project directory $ ls -l android/bin/ total 1988 -rw-rw-r-- 1 e8johan e8johan 179 2011-11-10 21:42 build.prop drwxrwxr-x 3 e8johan e8johan 4096 2011-11-10 21:42 classes -rw-rw-r-- 1 e8johan e8johan 33396 2011-11-10 21:42 classes.dex -rw-rw-r-- 1 e8johan e8johan 2251 2011-11-10 21:42 classes.dex.d drwxrwxr-x 6 e8johan e8johan 4096 2011-11-10 21:42 res -rw-rw-r-- 1 e8johan e8johan 431594 2011-11-10 21:42 Widgetdemo.ap_ -rw-rw-r-- 1 e8johan e8johan 2045 2011-11-10 21:42 Widgetdemo.ap_.d -rw-rw-r-- 1 e8johan e8johan 767735 2011-11-10 21:42 Widgetdemo-debug.apk -rw-rw-r-- 1 e8johan e8johan 767731 2011-11-10 21:42 Widgetdemo-debug-unaligned.apk -rw-rw-r-- 1 e8johan e8johan 305 2011-11-10 21:42 Widgetdemo-debug-unaligned.apk.d
  • 24. First Run on Phone ● Installs Ministro – Installs Qt – Resumes https://market.android.com/details?id=eu.licentia.necessitas.ministro
  • 26. More on Ministro ● Qt libraries are shared among all Qt apps on the device ● From the beta release, the ABI is stable, i.e. Qt can be upgraded separately from apps
  • 27. Configurability ● Android target SDK ● API levels ● Application icon ● Permissions ● What your app wants to be able to do ● Libraries ● Which Qt modules are needed ● More...
  • 28. Debugging ● Yes! :-) ● Android NDK comes with gdb ● Works with QtCreator ● Requires some tweaking ● Described in the Necessitas Wiki
  • 29. Qt and Device UIs Got to show you this!
  • 30. User Interface Development ● Classic – standard widgets, etc ● Rectangular areas ● Non-overlapping ● Clipping their children ● Provides familiarity ● Device UIs ● Blend with the device ● Provide a brand feel ● etc
  • 31. Building Modern UIs ● No more widgets! ● Canvas / scene ● Timers everywhere ● Multiple simultaneous transitions ● Complex, interconnected state machines ● Pain! :-)
  • 32. History of Qt and Modern UIs ● QCanvas ● QGraphicsView ● QTimeLine ● QGraphicsItemAnimation ● An animation framework ● A state machine framework ● The birth of QtQuick
  • 33. QtQuick ● What is QtQuick? ● A run-time for QML ● Tooling ● What is QML ● Declarative ● JavaScript
  • 34. QML import QtQuick 1.0 Rectangle { Rectangle { MouseArea { } } }
  • 35. QML Rectangle { width: 500 height: 500 Rectangle {
  • 36. QML Rectangle { Rectangle { id: box color: "red" width: 100 height: 100 x: 200
  • 37. QML MouseArea { anchors.fill: parent onClicked: { if(box.state=="up") box.state="down"; else box.state="up"; } }
  • 38. QML Rectangle { state: "up" states: [ State { name: "up" PropertyChanges { target: box; y: 50 } }, State { name: "down" PropertyChanges { target: box; y: 350 } } ]
  • 39. Demo
  • 40. QML Behavior on y { PropertyAnimation { duration: 1000 easing.type: Easing.OutBounce } }
  • 41. Demo
  • 42. Integrate with C++ ● QObjects to QtQuick QObject *foo = …; setProperty(“foo”, foo); ● C++ classes in QtQuick class Foo : public QObject { … }; qmlRegisterType<Foo>("FooLib", 1, 0, "Foo"); Foo { property: value } ● QtMediaHub - http://gitorious.org/qtmediahub
  • 44. Of course QtQuick works on Android too. With hardware accelerated graphics.
  • 45. Qt 5 ● A great opportunity to … ● … get rid of API limitations ● … split the repos into more independent parts ● … take advantage of modern C++ ● Widgets and QML are peers ● More acceleration, shaders, etc – amazing performance
  • 46. A new Dawn ● Truly Open Source – a www.qt-project.org ● Qt for Desktop ● Windows / X11 / OS X... more ● Qt for Devices ● Symbian / Maemo / MeeGo / Android / Blackberry / iOS / Kindle... more
  • 47. Thank you! [email protected] We're hiring! http://pelagicore.com/career.html