SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
sandroandrade@kde.org
@andradesandro
Sandro Andrade
Architecting Qt Mobile Applications
Frameworks, Code Generators and Beyond
Akademy 2017
whoami
whoami
whoami
whoami
What is this talk about?
What is this talk about?
What is this talk about?
●
Qt offers a stable UI framework for cross-
platform mobile applications development
●
Large and complex Qt mobile applications
still lack some architectural-level support
●
A lot of functionalities are recurrent and
amenable to automatic code generation
What is this talk about?
●
Some Qt disabilities in mobile development:
– Lack of high-level frameworks delivering
modular and reusable architectural solutions for
mobile apps
– KDE Frameworks 5 is likely to be cumbersome
and/or introduce unwanted dependencies
– Lack of high-level reusable UI components (KDE
Kirigami to the rescue)
What is this talk about?
●
Some Qt disabilities in mobile development:
– No built-in support for JSON-based RESTful
communication (lack of a JSONListModel)
– No built-in support for disconnected operations
(with automatic sync upon reconnected)
– No built-in cross-platform support for receiving
push notifications
– Issues with deployment of read-write files across
platforms
What is this talk about?
●
We’ve been working on some mobile Qt
development projects at IFBA over the last
1.5 years
●
Such Qt disabilities has motivated us to
investigate to which extent such problems
can be alleviated with the use of well-
thought architectures and effective tooling
Introducing Meg
=
+
Meg
A lean dynamic QML-based
architecture for Qt
cross-platform mobile
applications
A code generator which
Enables the productive
creation of modular
RESTful servers and
Qt mobile applications
Introducing Meg
●
Implemented as a Ruby Thor-based CLI
●
Templates are specified in Embedded RuBy
(ERB)
●
Generators are modular (Thor with modules)
●
Provides a JSONListModel QML object
●
Automatic download of Google Material Icons
Introducing Meg
●
Currently available templates:
●
Sinatra RESTful server with modular architecture
(sinatra-server)
●
Ruby Sinatra RESTful service plug-in (sinatra-service-
plugin)
●
Simple Qt mobile app with plugin-based architecture
(simple-app)
●
Qt mobile RESTful app with plugin-based architecture
(restful-app)
●
Qt mobile RESTful client plug-in (restful-client-plugin)
Meg – quick demo
●
Installing meg:
– git clone https://github.com/sandroandrade/meg.git
– install ruby
– run ‘gem install bundler’
– Run ‘bundle install’
– CLI is in ‘./bin/meg’
Meg – quick demo
●
Creating a simple Qt plugin-based mobile
app:
– ./bin/meg new SimpleApp -t simple-app
●
Creating some plug-ins:
– ./bin/meg generate plugin students -t basic-plugin -a
simpleapp/
– ./bin/meg generate plugin teachers -t basic-plugin -a
simpleapp/
Meg – quick demo
●
Creating a modular Sinatra RESTful server:
– ./bin/meg new myserver -t sinatra-server
●
Creating some plug-ins:
– ./bin/meg generate plugin Conference -t sinatra-service-
plugin -a myserver/ acronym:string name:string
city:string country:string venue:string start_date:datetime
end_date:datetime
– ./bin/meg generate plugin Speaker -t sinatra-service-
plugin -a myserver/ name:string affiliation:string
shortbio:string
Meg – quick demo
●
Running the server:
– run ‘rake db:migrate’
– populate database with some data
– start the server: ‘ruby myserver.rb’
●
Checking the services:
– curl http://localhost:4567/conferences | python -m
json.tool
– curl http://localhost:4567/speakers | python -m json.tool
Meg – quick demo
●
Creating a mobile Qt RESTful client:
– ./bin/meg new MyApp -t restful-app
●
Creating the RESTful client plug-ins:
– ./bin/meg generate plugin conferences -t restful-client-
plugin -a myapp -i name -c action/ic_speaker_notes
acronym:string name:string city:string venue:string
start_date:datetime end_date:datetime
– ./bin/meg generate plugin speakers -t restful-client-plugin
-a myapp -i name -c action/ic_record_voice_over
name:string affiliation:string shortbio:string
Meg – quick demo
●
Qt RESTful client:
Meg – quick demo
●
Future work:
– Add templates for full CRUD support
– Add template for kirigami-based UI
workflows
– Support relationships between models
– Support push notification
●
Try it! Contributions welcome!
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Qt5.pptx
Qt5.pptxQt5.pptx
Qt5.pptx
 
[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security[OSSummitEU2017]Ten Llayers of Linux Container Security
[OSSummitEU2017]Ten Llayers of Linux Container Security
 
It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)It's a Breeze to develop Apache Airflow (Apache Con Berlin)
It's a Breeze to develop Apache Airflow (Apache Con Berlin)
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | Edureka
 
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
Paris Container Day 2016 : Cloud de conteneurs, conteneurs dans le cloud, str...
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Report portal
Report portalReport portal
Report portal
 
Platform SDK Update
Platform SDK UpdatePlatform SDK Update
Platform SDK Update
 
QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger QtDD13 - Qt Creator plugins - Tobias Hunger
QtDD13 - Qt Creator plugins - Tobias Hunger
 
Gitflow - Clouddictive
Gitflow   - ClouddictiveGitflow   - Clouddictive
Gitflow - Clouddictive
 
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
Paris Container Day 2016 : Deep dive dc-os ci-cd (Mesosphere & Container Solu...
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for tooling
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
 
Docker off the grid
Docker off the gridDocker off the grid
Docker off the grid
 
Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"Sep Nasiri "Upwork PHP Architecture"
Sep Nasiri "Upwork PHP Architecture"
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)
 
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
An Overview of the Open Source Vulkan Driver for Raspberry Pi 4
 
版本控制Git
版本控制Git版本控制Git
版本控制Git
 

Ähnlich wie Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond

Ähnlich wie Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond (20)

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
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosi
 
Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill Sprint
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructure
 
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
 
Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021Nugwc k8s session-16-march-2021
Nugwc k8s session-16-march-2021
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Introduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform AppsIntroduction Flutter for Create Multiplatform Apps
Introduction Flutter for Create Multiplatform Apps
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Qt
QtQt
Qt
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Rohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStackRohit Yadav - Modern UI for CloudStack
Rohit Yadav - Modern UI for CloudStack
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Serverless java
Serverless   javaServerless   java
Serverless java
 
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...
 

Mehr von Sandro Andrade

Mehr von Sandro Andrade (17)

O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoTO Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
 
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
Painel "Software Livre, Conhecimento Livre e Mídias Digitais" - II Seminário ...
 
Práticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDEPráticas de Agilidade e QA na Comunidade KDE
Práticas de Agilidade e QA na Comunidade KDE
 
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
Software Livre e Novas Formas de Trabalho - InfoUNEB 2016
 
Minuet - the KDE approach to music education
Minuet - the KDE approach to music educationMinuet - the KDE approach to music education
Minuet - the KDE approach to music education
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com Qt
 
O KDE no mundo
O KDE no mundoO KDE no mundo
O KDE no mundo
 
QtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE worldQtModeling - bringing metamodeling features into the KDE world
QtModeling - bringing metamodeling features into the KDE world
 
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
Software Livre: Estruturalismo, Impactos no Processo de Ensino-Aprendizagem e...
 
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
Do Search-Based Approaches Improve the Design of Self-Adaptive Systems ? A Co...
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigData
 
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
Apresentação no 4o Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 201...
 
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
Palestra do FISL15: QtModeling: Metamodelagem e Model-Driven Software Enginee...
 
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e SociaisKDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
KDE de 2008 a 2018: Retrospectivas e Perspectivas Técnicas e Sociais
 
Desenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE PlasmaDesenvolvendo Widgets QML para o KDE Plasma
Desenvolvendo Widgets QML para o KDE Plasma
 
SASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSASO2013 - PechaKucha version
SASO2013 - PechaKucha version
 
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
Architectural Design Spaces for Feedback Control in Self-Adaptive Systems Con...
 

Kürzlich hochgeladen

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Kürzlich hochgeladen (20)

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 

Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond

  • 1. sandroandrade@kde.org @andradesandro Sandro Andrade Architecting Qt Mobile Applications Frameworks, Code Generators and Beyond Akademy 2017
  • 4. What is this talk about?
  • 5. What is this talk about?
  • 6. What is this talk about? ● Qt offers a stable UI framework for cross- platform mobile applications development ● Large and complex Qt mobile applications still lack some architectural-level support ● A lot of functionalities are recurrent and amenable to automatic code generation
  • 7. What is this talk about? ● Some Qt disabilities in mobile development: – Lack of high-level frameworks delivering modular and reusable architectural solutions for mobile apps – KDE Frameworks 5 is likely to be cumbersome and/or introduce unwanted dependencies – Lack of high-level reusable UI components (KDE Kirigami to the rescue)
  • 8. What is this talk about? ● Some Qt disabilities in mobile development: – No built-in support for JSON-based RESTful communication (lack of a JSONListModel) – No built-in support for disconnected operations (with automatic sync upon reconnected) – No built-in cross-platform support for receiving push notifications – Issues with deployment of read-write files across platforms
  • 9. What is this talk about? ● We’ve been working on some mobile Qt development projects at IFBA over the last 1.5 years ● Such Qt disabilities has motivated us to investigate to which extent such problems can be alleviated with the use of well- thought architectures and effective tooling
  • 10. Introducing Meg = + Meg A lean dynamic QML-based architecture for Qt cross-platform mobile applications A code generator which Enables the productive creation of modular RESTful servers and Qt mobile applications
  • 11. Introducing Meg ● Implemented as a Ruby Thor-based CLI ● Templates are specified in Embedded RuBy (ERB) ● Generators are modular (Thor with modules) ● Provides a JSONListModel QML object ● Automatic download of Google Material Icons
  • 12. Introducing Meg ● Currently available templates: ● Sinatra RESTful server with modular architecture (sinatra-server) ● Ruby Sinatra RESTful service plug-in (sinatra-service- plugin) ● Simple Qt mobile app with plugin-based architecture (simple-app) ● Qt mobile RESTful app with plugin-based architecture (restful-app) ● Qt mobile RESTful client plug-in (restful-client-plugin)
  • 13. Meg – quick demo ● Installing meg: – git clone https://github.com/sandroandrade/meg.git – install ruby – run ‘gem install bundler’ – Run ‘bundle install’ – CLI is in ‘./bin/meg’
  • 14. Meg – quick demo ● Creating a simple Qt plugin-based mobile app: – ./bin/meg new SimpleApp -t simple-app ● Creating some plug-ins: – ./bin/meg generate plugin students -t basic-plugin -a simpleapp/ – ./bin/meg generate plugin teachers -t basic-plugin -a simpleapp/
  • 15. Meg – quick demo ● Creating a modular Sinatra RESTful server: – ./bin/meg new myserver -t sinatra-server ● Creating some plug-ins: – ./bin/meg generate plugin Conference -t sinatra-service- plugin -a myserver/ acronym:string name:string city:string country:string venue:string start_date:datetime end_date:datetime – ./bin/meg generate plugin Speaker -t sinatra-service- plugin -a myserver/ name:string affiliation:string shortbio:string
  • 16. Meg – quick demo ● Running the server: – run ‘rake db:migrate’ – populate database with some data – start the server: ‘ruby myserver.rb’ ● Checking the services: – curl http://localhost:4567/conferences | python -m json.tool – curl http://localhost:4567/speakers | python -m json.tool
  • 17. Meg – quick demo ● Creating a mobile Qt RESTful client: – ./bin/meg new MyApp -t restful-app ● Creating the RESTful client plug-ins: – ./bin/meg generate plugin conferences -t restful-client- plugin -a myapp -i name -c action/ic_speaker_notes acronym:string name:string city:string venue:string start_date:datetime end_date:datetime – ./bin/meg generate plugin speakers -t restful-client-plugin -a myapp -i name -c action/ic_record_voice_over name:string affiliation:string shortbio:string
  • 18. Meg – quick demo ● Qt RESTful client:
  • 19. Meg – quick demo ● Future work: – Add templates for full CRUD support – Add template for kirigami-based UI workflows – Support relationships between models – Support push notification ● Try it! Contributions welcome!