SlideShare uma empresa Scribd logo
1 de 34
Porting Qt
to a New Smartphone
for Fun and Fame
Jarosław Staniek • Tomasz Olszak • @QtForTizen
License: CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0
2 of 34
Agenda
●
About Qt
●
What makes a successful Qt port?
●
What to port?
●
How to port?
●
QML & Qt Quick
●
Tizen use case
●
How easy?
3 of 34
What’s Qt?
●
Popular app/UI framework & tools
●
Use it with C++, QML, JavaScript
or... ~20 other languages
4 of 34
What’s Qt?
●
Qt Creator forms the Qt IDE
5 of 34
Platforms supported by Qt5
Platforms External (community) ports
Windows OpenSolaris
OS X Haiku
X11 OS/2
Embedded Linux webOS
Wayland Amazon Kindle DX
QNX/ Blackberry 10 Mir (Ubuntu)
Android AmigaOS
iOS Tizen
VxWorks Sailfish OS
6 of 34
Who makes Qt?
●
Community through openly governed,
inclusive, meritocratic development model
●
Open Source (LGPL, GPL) for any use
●
Optional broad commercial support/licensing
7 of 34
Recent history of Qt
2005 4.0 release
2008 Nokia acquires Qt
2009 Qt 4.5 goes LGPL
2011 Qt Project starts (open
governance)
2012 Digia acquires Qt business
Dec 2012 5.0 release
July 2013 5.1 release
(1st
release in 1995)
8 of 34
Community-supported devices
●
blackberry-playbook-armv7le-qcc
●
blackberry-playbook-x86-qcc
●
linux-archos-gen8-g++
●
linux-arm-amlogic-8726M-g++
●
linux-arm-trident-pnx8473-g++
●
linux-beagleboard-g++
●
linux-imx53qsb-g++
●
linux-imx6-g++
●
linux-maemo-n9-g++
●
linux-mipsel-broadcom-97425-g++
●
linux-rasp-pi-g++
●
linux-sh4-stmicro-ST7108-g++
●
linux-sh4-stmicro-ST7540-g++
●
linux-snowball-g++
●
linux-tegra2-g++
●
linux-g++-tizen-mobile
●
linux-g++-tizen-ivi
9 of 34
What makes a successful Qt port?
You want to:
●
build/run/debug
console apps & GUI apps
●
use Qt Creator for that
●
target device and simulator
10 of 34
Fine-tuned native look & feel for apps
What makes a successful Qt port?
11 of 34
Handle & simulate:
●
mobile phone sensors
●
middleware like message broker (car IVI...)
●
device controls (set-top-box, TV, refrigerator)
What makes a successful Qt port?
12 of 34
What to port?
Qt frameworks
Qt tools
+Expose platform specifics for Qt apps
13 of 34
Device-specific porting
Depending on:
●
CPU architecture
●
Compiler
●
Operating system
●
Device form factors
– (resolution, screen size, phone,
tablet, large displays, tv, set top box, ivi)
14 of 34
How to port?
15 of 34
How to port Qt frameworks?
●
Define build specifications for Qt
●
Use QPA (Qt Platform Abstraction)
for platform features
●
Use QStyle APIs
for native QWidgets look
●
Or use Qt Quick Controls APIs
for native Qt Quick look
16 of 34
How to “port”
Qt tools/integration?
●
Define platform’s kit for Qt Creator
●
Implement plugin(s) for Qt Creator:
– communication with device(s)
– app deployment/packaging
– simulator
17 of 34
QPA: Qt Platform Abstraction
●
In Qt 5 replaces QWS (Qt Windowing
System from Qt 4.x for Embedded Linux)
●
Defines device/OS abstraction layer for
platform specifics & window system
●
Set of C++ interface classes
How to “port”?
18 of 34
QML & Qt Quick
19 of 34
Qt Qml
●
Implements the QML language & engine
(Qt Meta/Modelling Language)
●
Offers extensibility APIs
20 of 34
Qt Quick 2
●
Built on top of Qt Qml, adds:
– types for GUI app development
– visual canvas, states, transitions, effects,
animations, user input, model/view
21 of 34
Qt Quick 2
●
Requires & 2
●
Recommended for mobile/embedded
instead of QtWidgets/QStyle
22 of 34
●
OpenGL for Embedded Systems
●
a subset of the OpenGL 3D graphics
APIs known on desktops
2
23 of 34
●
Embedded-System Graphics Library
●
Accelerated, 2D/3D rendering
●
Also used by Android, Wayland, Mesa 3D, Mir, SDL...
24 of 34
How it plays together?
← optional
← Qt apps can
combine Media,
2D and 3D features
25 of 34
Porting Qt to a new platform:
Tizen use case
Based on:
26 of 34
Porting Qt to a new platform:
Tizen use case
Step 1/6: Make it build & run console apps
●
Use platform's toolchain
●
Build Qt Base module with minimal platform plugin
(no OpenGL, EGL dependencies)
●
Fix issues with platform header and library paths, etc.
27 of 34
Step 2/6: Make it build & run GUI apps
Look at the platform windowing system:
●
Is it X11-based? Adapt existing Qt xcb platform plugin
(Tizen mobile case)
●
Is it Wayland-based? Adapt existing Qt Wayland plugin.
(Tizen IVI case)
●
Without WS? Adapt the Qt EGLFS (EGL fullscreen) plugin
●
Other: write your own plugin
Porting Qt to a new platform:
Tizen use case
28 of 34
Step 3/6: Integrate with platform middleware:
This can be exposed to Qt APIs:
●
Sensors: accelerometer, proximity sensor, light sensor,
compass sensor, magnetic sensor...
●
Support screen-orientation-change events
●
Input method (maalit, iBus, SCIM...)
●
Application life cycle and hardware buttons
●
Language change events, location/GPS, NFC, color palette,
low battery warnings, system notifications...
Porting Qt to a new platform:
Tizen use case
29 of 34
Step 4/6: Native look & feel for Qt apps
●
Find platform UI/UX guidelines, graphics, icons, color palettes
●
Use that in styles compliant with the Qt Quick Controls APIs
●
Result: native look & feel, code portability to other platforms
●
Add platform-specific set of controls if standard
Qt Quick Controls are not sufficient
Porting Qt to a new platform:
Tizen use case
30 of 34
Step 5/6 Optimizations
●
Add preloading process to boost startup of Qt apps.
(similar to MeeGo Harmattan's booster
and Android's zygote)
Porting Qt to a new platform:
Tizen use case
31 of 34
Step 6/6: Integrate with Qt Creator
●
Add QtCreator plugin for making deploying easier
for app developers
●
Soon to be released in Alpha 4
Porting Qt to a new platform:
Tizen use case
32 of 34
Porting Qt – How easy?
Language Files Lines of code
QML 39 1870
Javascript 3 1758
Bourne Shell 3 100
IDL(pro) 3 93
C++ 2 580
C/C++ Header 2 27
Total 52 3906
Language Files Lines of code
C++ 10 685
C/C++ Header 9 173
IDL(pro) 1 26
Total 20 884
quickcontrols-tizen module
qtsensors module
Thanks!
Questions welcome!
Join us @ http://qt-project.org/wiki/Tizen
34 of 34
References
●
http://qt-project.org/wiki/Tizen
●
http://en.wikipedia.org/wiki/Qt_(framework)
●
http://my.safaribooksonline.com/0131872494/pref04?portal=oreilly
●
http://qt-project.org/wiki/Qt-Platform-Abstraction
●
http://qt-project.org/videos/watch/qpa-the-qt-platform-abstraction
●
http://qforever.wordpress.com/2012/04/10/qt-platform-abstraction-starter-guide/
●
http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-definetypes.html
●
http://qt-project.org/doc/qt-5.0/qtquick/qtquick-index.html
●
http://en.wikipedia.org/wiki/EGL_(OpenGL)
●
http://en.wikipedia.org/wiki/OpenGL_ES
●
http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrols/qtquickcontrols-overview.html
●
http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrolsstyles/qtquickcontrolsstyles-index.html

Mais conteúdo relacionado

Mais procurados

Qt user interface
Qt user interfaceQt user interface
Qt user interfacemeriem sari
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Samsung Open Source Group
 
Learn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialLearn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialQt Commercial, Digia
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Qt
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...Next Big Thing AG
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtQt
 
BKK16-105 HALs for LITE
BKK16-105 HALs for LITEBKK16-105 HALs for LITE
BKK16-105 HALs for LITELinaro
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Phil www.rzr.online.fr
 

Mais procurados (12)

Qt user interface
Qt user interfaceQt user interface
Qt user interface
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
 
Learn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialLearn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt Commercial
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
 
tizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcovaltizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcoval
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qt
 
Where is LLVM Being Used Today?
Where is LLVM Being Used Today? Where is LLVM Being Used Today?
Where is LLVM Being Used Today?
 
BKK16-105 HALs for LITE
BKK16-105 HALs for LITEBKK16-105 HALs for LITE
BKK16-105 HALs for LITE
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529
 

Semelhante a Port Qt to New Smartphone for Fun and Fame

Migrating from Photon to Qt
Migrating from Photon to QtMigrating from Photon to Qt
Migrating from Photon to QtICS
 
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Johan Thelin
 
Qt for Python
Qt for PythonQt for Python
Qt for PythonICS
 
Qt and the Red Flag Linux Distro
Qt and the Red Flag Linux DistroQt and the Red Flag Linux Distro
Qt and the Red Flag Linux Distroaccount inactive
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qtMuhammad Sabry
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfPrabindh Sundareson
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemoachipa
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical PresentationDaniel Rocha
 
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentEpam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentIvan Marinov
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Johan Thelin
 
QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)Hansol Kang
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 

Semelhante a Port Qt to New Smartphone for Fun and Fame (20)

Migrating from Photon to Qt
Migrating from Photon to QtMigrating from Photon to Qt
Migrating from Photon to Qt
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
 
Qt and the Red Flag Linux Distro
Qt and the Red Flag Linux DistroQt and the Red Flag Linux Distro
Qt and the Red Flag Linux Distro
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
 
Qt
QtQt
Qt
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentEpam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
 
Cross Platform Qt
Cross Platform QtCross Platform Qt
Cross Platform Qt
 
QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)QT 프로그래밍 기초(basic of QT programming tutorial)
QT 프로그래밍 기초(basic of QT programming tutorial)
 
Qt for S60
Qt for S60Qt for S60
Qt for S60
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Qtframework
QtframeworkQtframework
Qtframework
 

Último

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Port Qt to New Smartphone for Fun and Fame

  • 1. Porting Qt to a New Smartphone for Fun and Fame Jarosław Staniek • Tomasz Olszak • @QtForTizen License: CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0
  • 2. 2 of 34 Agenda ● About Qt ● What makes a successful Qt port? ● What to port? ● How to port? ● QML & Qt Quick ● Tizen use case ● How easy?
  • 3. 3 of 34 What’s Qt? ● Popular app/UI framework & tools ● Use it with C++, QML, JavaScript or... ~20 other languages
  • 4. 4 of 34 What’s Qt? ● Qt Creator forms the Qt IDE
  • 5. 5 of 34 Platforms supported by Qt5 Platforms External (community) ports Windows OpenSolaris OS X Haiku X11 OS/2 Embedded Linux webOS Wayland Amazon Kindle DX QNX/ Blackberry 10 Mir (Ubuntu) Android AmigaOS iOS Tizen VxWorks Sailfish OS
  • 6. 6 of 34 Who makes Qt? ● Community through openly governed, inclusive, meritocratic development model ● Open Source (LGPL, GPL) for any use ● Optional broad commercial support/licensing
  • 7. 7 of 34 Recent history of Qt 2005 4.0 release 2008 Nokia acquires Qt 2009 Qt 4.5 goes LGPL 2011 Qt Project starts (open governance) 2012 Digia acquires Qt business Dec 2012 5.0 release July 2013 5.1 release (1st release in 1995)
  • 8. 8 of 34 Community-supported devices ● blackberry-playbook-armv7le-qcc ● blackberry-playbook-x86-qcc ● linux-archos-gen8-g++ ● linux-arm-amlogic-8726M-g++ ● linux-arm-trident-pnx8473-g++ ● linux-beagleboard-g++ ● linux-imx53qsb-g++ ● linux-imx6-g++ ● linux-maemo-n9-g++ ● linux-mipsel-broadcom-97425-g++ ● linux-rasp-pi-g++ ● linux-sh4-stmicro-ST7108-g++ ● linux-sh4-stmicro-ST7540-g++ ● linux-snowball-g++ ● linux-tegra2-g++ ● linux-g++-tizen-mobile ● linux-g++-tizen-ivi
  • 9. 9 of 34 What makes a successful Qt port? You want to: ● build/run/debug console apps & GUI apps ● use Qt Creator for that ● target device and simulator
  • 10. 10 of 34 Fine-tuned native look & feel for apps What makes a successful Qt port?
  • 11. 11 of 34 Handle & simulate: ● mobile phone sensors ● middleware like message broker (car IVI...) ● device controls (set-top-box, TV, refrigerator) What makes a successful Qt port?
  • 12. 12 of 34 What to port? Qt frameworks Qt tools +Expose platform specifics for Qt apps
  • 13. 13 of 34 Device-specific porting Depending on: ● CPU architecture ● Compiler ● Operating system ● Device form factors – (resolution, screen size, phone, tablet, large displays, tv, set top box, ivi)
  • 14. 14 of 34 How to port?
  • 15. 15 of 34 How to port Qt frameworks? ● Define build specifications for Qt ● Use QPA (Qt Platform Abstraction) for platform features ● Use QStyle APIs for native QWidgets look ● Or use Qt Quick Controls APIs for native Qt Quick look
  • 16. 16 of 34 How to “port” Qt tools/integration? ● Define platform’s kit for Qt Creator ● Implement plugin(s) for Qt Creator: – communication with device(s) – app deployment/packaging – simulator
  • 17. 17 of 34 QPA: Qt Platform Abstraction ● In Qt 5 replaces QWS (Qt Windowing System from Qt 4.x for Embedded Linux) ● Defines device/OS abstraction layer for platform specifics & window system ● Set of C++ interface classes How to “port”?
  • 18. 18 of 34 QML & Qt Quick
  • 19. 19 of 34 Qt Qml ● Implements the QML language & engine (Qt Meta/Modelling Language) ● Offers extensibility APIs
  • 20. 20 of 34 Qt Quick 2 ● Built on top of Qt Qml, adds: – types for GUI app development – visual canvas, states, transitions, effects, animations, user input, model/view
  • 21. 21 of 34 Qt Quick 2 ● Requires & 2 ● Recommended for mobile/embedded instead of QtWidgets/QStyle
  • 22. 22 of 34 ● OpenGL for Embedded Systems ● a subset of the OpenGL 3D graphics APIs known on desktops 2
  • 23. 23 of 34 ● Embedded-System Graphics Library ● Accelerated, 2D/3D rendering ● Also used by Android, Wayland, Mesa 3D, Mir, SDL...
  • 24. 24 of 34 How it plays together? ← optional ← Qt apps can combine Media, 2D and 3D features
  • 25. 25 of 34 Porting Qt to a new platform: Tizen use case Based on:
  • 26. 26 of 34 Porting Qt to a new platform: Tizen use case Step 1/6: Make it build & run console apps ● Use platform's toolchain ● Build Qt Base module with minimal platform plugin (no OpenGL, EGL dependencies) ● Fix issues with platform header and library paths, etc.
  • 27. 27 of 34 Step 2/6: Make it build & run GUI apps Look at the platform windowing system: ● Is it X11-based? Adapt existing Qt xcb platform plugin (Tizen mobile case) ● Is it Wayland-based? Adapt existing Qt Wayland plugin. (Tizen IVI case) ● Without WS? Adapt the Qt EGLFS (EGL fullscreen) plugin ● Other: write your own plugin Porting Qt to a new platform: Tizen use case
  • 28. 28 of 34 Step 3/6: Integrate with platform middleware: This can be exposed to Qt APIs: ● Sensors: accelerometer, proximity sensor, light sensor, compass sensor, magnetic sensor... ● Support screen-orientation-change events ● Input method (maalit, iBus, SCIM...) ● Application life cycle and hardware buttons ● Language change events, location/GPS, NFC, color palette, low battery warnings, system notifications... Porting Qt to a new platform: Tizen use case
  • 29. 29 of 34 Step 4/6: Native look & feel for Qt apps ● Find platform UI/UX guidelines, graphics, icons, color palettes ● Use that in styles compliant with the Qt Quick Controls APIs ● Result: native look & feel, code portability to other platforms ● Add platform-specific set of controls if standard Qt Quick Controls are not sufficient Porting Qt to a new platform: Tizen use case
  • 30. 30 of 34 Step 5/6 Optimizations ● Add preloading process to boost startup of Qt apps. (similar to MeeGo Harmattan's booster and Android's zygote) Porting Qt to a new platform: Tizen use case
  • 31. 31 of 34 Step 6/6: Integrate with Qt Creator ● Add QtCreator plugin for making deploying easier for app developers ● Soon to be released in Alpha 4 Porting Qt to a new platform: Tizen use case
  • 32. 32 of 34 Porting Qt – How easy? Language Files Lines of code QML 39 1870 Javascript 3 1758 Bourne Shell 3 100 IDL(pro) 3 93 C++ 2 580 C/C++ Header 2 27 Total 52 3906 Language Files Lines of code C++ 10 685 C/C++ Header 9 173 IDL(pro) 1 26 Total 20 884 quickcontrols-tizen module qtsensors module
  • 33. Thanks! Questions welcome! Join us @ http://qt-project.org/wiki/Tizen
  • 34. 34 of 34 References ● http://qt-project.org/wiki/Tizen ● http://en.wikipedia.org/wiki/Qt_(framework) ● http://my.safaribooksonline.com/0131872494/pref04?portal=oreilly ● http://qt-project.org/wiki/Qt-Platform-Abstraction ● http://qt-project.org/videos/watch/qpa-the-qt-platform-abstraction ● http://qforever.wordpress.com/2012/04/10/qt-platform-abstraction-starter-guide/ ● http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-definetypes.html ● http://qt-project.org/doc/qt-5.0/qtquick/qtquick-index.html ● http://en.wikipedia.org/wiki/EGL_(OpenGL) ● http://en.wikipedia.org/wiki/OpenGL_ES ● http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrols/qtquickcontrols-overview.html ● http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrolsstyles/qtquickcontrolsstyles-index.html