SlideShare a Scribd company logo
1 of 28
Download to read offline
Desenvolvendo Aplicações Android com Qt
Sandro Andrade
sandroandrade@kde.org | sandroandrade.org | @andradesandro
Objetivos
● Apresentar o Qt e os benefícios da sua utilização
● Apresentar uma visão geral das funcionalidades do Qt para
desenvolvimento multiplataforma para dispositivos móveis e
embarcados
● Apresentar os avanços mais recentes do Qt nesta área
● Proporcionar uma vivência prática ao desenvolver uma aplicação
Android com Qt
whoami
● Professor no Instituto Federal de Educação, Ciência e Tecnologia da
Bahia – IFBA
● Desenvolvedor, projetista e arquiteto de software
● Pesquisador: engenharia de software + sistemas distribuídos
● Colaborador nos projetos de Software Livre Qt e KDE
– QtModeling
– KDevelop, Plasma e Minuet
● Foi membro do KDE Marketing Working Group
● Membro do Board de Diretores do KDE e.V.
O Qt
● Toolkit multiplataforma para desenvolvimento de aplicações
(www.qt.io)
● Oferece um amplo conjunto de funcionalidades para multimídia,
programação em rede, banco de dados, testes, Bluetooth, OpenGL,
programação multi-threaded, scripting, XML, web channel, etc
● Oferece três tecnologias principais para desenvolvimento de GUI:
– Qt Widgets: C++ (oficial), Python, C#, Go, Haskell, Ruby
– Qt Quick: QML + JS
– Qt Webkit: HTML + CSS + JS
O Qt
● Comparação entre as três tecnologias para GUI:
Qt Widgets Qt Quick Qt Webkit
Linguagens utilizadas C++ QML/JS HTML/CSS/JS
Look n feel nativo’ ’ ✔ ✔
Look n feel customizado’ ’ ✔ ( )✔
GUI fluidas e animadas ✔
Suporte a touch screen ✔
Widgets padrao da industria ✔
O Qt
● Comparação entre as três tecnologias para GUI:
Qt Widgets Qt Quick Qt Webkit
Model/View programming ✔ (✔)
Rapid UI development ✔ ( )✔
Aceleracao por hardware ✔
Efeitos graficos ✔
Processamento de rich text ✔ ✔
Integracao de conteudo web
existente
✔
O Qt
● Por que usar?
– É uma tecnologia madura (20 anos de existência)
– É um toolkit extremamente produtivo (mesmo com C++ e melhor ainda
com QML/JS)
– É um toolkit bastante completo
– É efetivo no suporte ao desenvolvimento multiplataforma:
● Linux/X11
● Windows
● OS X
● Android
● IOS
● WinCE
O Qt
● Por que usar?
– Excelente documentação e comunidade bastante ativa
– Excelente desempenho (aceleração via hardware no QML)
– Diversas bibliotecas de terceiros baseadas no Qt (inqlude.org)
– Open governance com licença dual:
● LGPL
● Comercial
O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2000: Qt/Embedded + Qtopia
– 2006: Qtopia em milhares de dispositivos (Sharp / Motorola)
O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2009: lançamento do QML
– 2010-2011: Qt no Symbian e MeeGo
O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2011: projeto Necessitas (KDE) e o primeiro port do Qt para
Android
– 2013: primeiro technical-preview do suporte ao Android e iOS
oficial do Qt
● Inclusão das plataformas BlackBerry, Sailfish/Jolla and Ubuntu
Mobile
– 2014: cross-platform Qt Purchasing API e Bluetooth LE
– 2015: QML Qt Location e Qt Quick Controls for Embedded
O Qt e o Android
● Solução: QPA + JNI
● O Qt Creator gera o arquivo .apk pra você
● Uma aplicação Qt para Android consiste de duas partes:
– A aplicação em si, criada pelo desenvolvedor
– Um laucher da aplicação Android, gerada automaticamente pelo Qt
Creator
O Qt e o Android
● O Qt Creator oferece três métodos de implantação:
– Todas as dependências Qt empacotadas no .apk, ou
– Uso do mecanismo de implantação Ministro para gerenciar
dependências Qt
– Implantar as bibliotecas do Qt em um diretório temporário (somente
para propósitos de desenvolvimento)
● Start-up da aplicação:
– No começo é apenas uma aplicação Java
– Ocorre a carga das libs do Qt e o plugin do QPA
– A função main da aplicação é invocada em uma nova thread
O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– Criar um novo usuário (ex: android-devel)
– Instalar os pacotes básicos de desenvolvimento:
● pacman -S --needed base-devel qt5 jdk jre git gdb wget
– Baixar (www.qt.io) e instalar, no home do usuário android-
devel, o Qt para Android
– Após a instalação, executar o Qt Creator:
● Caminho “Tools/QtCreator/bin/qtcreator” na instalação do Qt
O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– No Qt Creator, ir em Tools Options Android:→ →
● Clique nos botões de download do Android SDK e Android NDK
● Realize o download
● Informe o caminho das instalações nos respectivos campos
– Encontre o número de API correspondente à versão do Android
no seu dispositivo
– Execute o Android SDK Manager (caminho “tools/android” na
instalação do Android SDK) e selecione somente o grupo
referente ao número de API do seu dispositivo
– Instale os pacotes
O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– Inicie o adb server (como root, sem usar o sudo): caminho
“platform-tools/adb start-server” na instalação do Android SDK
– Verifique se o seu dispositivo está com o modo developer
ativado. Ative caso não esteja
– Ligue seu dispositivo na porta USB do computador e confirme o
pedido de permissão para depuração USB
– Pronto: ao executar um projeto Qt com o kit do Android
selecionado, o Qt Creator irá perguntar em qual dispositivo
você deseja executar a aplicação (incluindo emuladores)
O Qt e o Android
● Módulos Qt de uso específico em dispositivos móveis (a maioria é
multiplataforma):
– Qt Bluetooth (QML e C++): Android, iOS, Linux (BlueZ 4.x/5.x) e OS X
– Qt Graphical Effects (QML)
– Qt Positioning (QML e C++): Android, iOS, Linux (com GeoClue) e WinRT
● Fontes de posicionamento (ex: satélite, wifi, arquivos) são plugins
– Qt Sensors (QML e C++): Android, iOS, SailFish e WinRT
● Acelerômetro, orientação, luz ambiente, dentre outros
– Qt Quick Extras
– Qt Android Extras: Qt Notifier
– Qt Mac Extras
Qt e Material Design
● Conjunto de diretrizes de design (linguagem visual) de UX do
Google
● Três esforços diferentes relacionados ao Qt:
– qml-material: https://github.com/papyros/qml-material
– Technical preview no Qt 5.6, esperado para o Qt 5.7
– Plasma Components
Qt e Material Design
● qml-material:
Qt e Material Design
● qml-material: IFBA’s SICAD Mobile
Qt e Material Design
● Hands-on: Niftly - RSS Reader
Conclusões
● O Qt para Android já é bem estável para uso em produção
● A possibilidade do uso de um mesmo codebase para escrever
aplicações para diversas plataformas móveis faz do Qt uma das
soluções mais interessantes nesta área atualmente
● O QML não pára de evoluir
● qml-material x Qt 5.6 x plasma components (o que usar ?)
Junte-se a nós!
● http://br.kde.org
● Lista de discussão:
– https://mail.kde.org/mailman/listinfo/kde-br
● Canal de IRC: freenode #kde-brasil
● O KDE e.V. apoia a sua contribuição
● Participe do Google Summer of Code e do KDE Season of Code
Desenvolvendo Aplicações Android com Qt
OBRIGADO !
sandroandrade@kde.org | sandroandrade.org | @andradesandro

More Related Content

What's hot

Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformasWebinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformasEmbarcados
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresTchelinux
 
TDC2016 - Explorando Qt5 e Python em Linux Embarcado
TDC2016 - Explorando Qt5 e Python em Linux EmbarcadoTDC2016 - Explorando Qt5 e Python em Linux Embarcado
TDC2016 - Explorando Qt5 e Python em Linux EmbarcadoCleiton Bueno
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeCleórbete Santos
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018Jonh Wendell
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Julio Cesar Eiras Melanda
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyJulio Cesar Eiras Melanda
 
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 IoTSandro Andrade
 
Aula 1 - Curso Git e Github - Webschool
Aula 1 - Curso Git e Github - WebschoolAula 1 - Curso Git e Github - Webschool
Aula 1 - Curso Git e Github - WebschoolBruno Orlandi
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010Wagner Reck
 
Git e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubGit e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubBruno Orlandi
 
Clean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterClean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterRicardo Ogliari
 

What's hot (20)

Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformasWebinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
 
Introdução ao Qt
Introdução ao QtIntrodução ao Qt
Introdução ao Qt
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 
Introdução ao qt
Introdução ao qtIntrodução ao qt
Introdução ao qt
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila Ayres
 
TDC2016 - Explorando Qt5 e Python em Linux Embarcado
TDC2016 - Explorando Qt5 e Python em Linux EmbarcadoTDC2016 - Explorando Qt5 e Python em Linux Embarcado
TDC2016 - Explorando Qt5 e Python em Linux Embarcado
 
Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividade
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
 
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
 
Apresentação QtConBr
Apresentação QtConBrApresentação QtConBr
Apresentação QtConBr
 
Aula 1 - Curso Git e Github - Webschool
Aula 1 - Curso Git e Github - WebschoolAula 1 - Curso Git e Github - Webschool
Aula 1 - Curso Git e Github - Webschool
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010
 
Hack Thursday - NodeJS
Hack Thursday - NodeJSHack Thursday - NodeJS
Hack Thursday - NodeJS
 
Git e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubGit e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHub
 
Git para Designers
Git para DesignersGit para Designers
Git para Designers
 
Clean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterClean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e Flutter
 
Open source e Digital Libraries
Open source e Digital LibrariesOpen source e Digital Libraries
Open source e Digital Libraries
 

Viewers also liked

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...Sandro Andrade
 
Tdc2011 goiânia-web apps-30102011
Tdc2011 goiânia-web apps-30102011Tdc2011 goiânia-web apps-30102011
Tdc2011 goiânia-web apps-30102011Awdren Fontão
 
JS limpo e testável com Segregated DOM
JS limpo e testável com Segregated DOMJS limpo e testável com Segregated DOM
JS limpo e testável com Segregated DOMtdc-globalcode
 
Instalador - Arch Linux
Instalador - Arch LinuxInstalador - Arch Linux
Instalador - Arch Linuxacheiobyte
 
Arch linux - Como instalar
Arch linux - Como instalarArch linux - Como instalar
Arch linux - Como instalarlinuxInfo
 
Curso de android
Curso de androidCurso de android
Curso de androidflaviokreis
 
Minicurso de Android Básico I - Dia 2
Minicurso de Android Básico I - Dia 2Minicurso de Android Básico I - Dia 2
Minicurso de Android Básico I - Dia 2Thales Levi
 
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraCurso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraWellington Oliveira
 
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 worldSandro Andrade
 
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...Sandro Andrade
 
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 educationSandro Andrade
 
SASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSandro Andrade
 
Urls amigáveis - Como criar uma url perfeita
Urls amigáveis - Como criar uma url perfeitaUrls amigáveis - Como criar uma url perfeita
Urls amigáveis - Como criar uma url perfeitaRodrigo Nogueira
 
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAWebinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAAVEVA
 
Construindo sua primeira aplicação android
Construindo sua primeira aplicação androidConstruindo sua primeira aplicação android
Construindo sua primeira aplicação android666Insanity
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraWellington Oliveira
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteWellington Oliveira
 

Viewers also liked (20)

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...
 
Tdc2011 goiânia-web apps-30102011
Tdc2011 goiânia-web apps-30102011Tdc2011 goiânia-web apps-30102011
Tdc2011 goiânia-web apps-30102011
 
JS limpo e testável com Segregated DOM
JS limpo e testável com Segregated DOMJS limpo e testável com Segregated DOM
JS limpo e testável com Segregated DOM
 
Instalador - Arch Linux
Instalador - Arch LinuxInstalador - Arch Linux
Instalador - Arch Linux
 
Arch Linux Flisol 2010
Arch Linux Flisol 2010Arch Linux Flisol 2010
Arch Linux Flisol 2010
 
Arch Linux FGSL 2011
Arch Linux FGSL 2011Arch Linux FGSL 2011
Arch Linux FGSL 2011
 
Arch linux - Como instalar
Arch linux - Como instalarArch linux - Como instalar
Arch linux - Como instalar
 
Curso de android
Curso de androidCurso de android
Curso de android
 
Minicurso de Android Básico I - Dia 2
Minicurso de Android Básico I - Dia 2Minicurso de Android Básico I - Dia 2
Minicurso de Android Básico I - Dia 2
 
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraCurso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
 
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
 
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...
 
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
 
SASO2013 - PechaKucha version
SASO2013 - PechaKucha versionSASO2013 - PechaKucha version
SASO2013 - PechaKucha version
 
Urls amigáveis - Como criar uma url perfeita
Urls amigáveis - Como criar uma url perfeitaUrls amigáveis - Como criar uma url perfeita
Urls amigáveis - Como criar uma url perfeita
 
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAWebinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
Construindo sua primeira aplicação android
Construindo sua primeira aplicação androidConstruindo sua primeira aplicação android
Construindo sua primeira aplicação android
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 

Similar to Desenvolvendo Aplicações Android com Qt

Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOFernando Rizzato
 
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosWebinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosEmbarcados
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
Hands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFHands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFGiordano Bruno Vieira
 
Minicurso wxWidgets
Minicurso wxWidgetsMinicurso wxWidgets
Minicurso wxWidgetsRenzo Petri
 
Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013guisester
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android NooclixIury Teixeira
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Androidguisester
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Renato Groff
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Android: Uma nova maneira de pensar
Android: Uma nova maneira de pensarAndroid: Uma nova maneira de pensar
Android: Uma nova maneira de pensarcezarsignori
 
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Renato Groff
 

Similar to Desenvolvendo Aplicações Android com Qt (20)

Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIO
 
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosWebinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
 
Qt
QtQt
Qt
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Hands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFHands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JF
 
Minicurso wxWidgets
Minicurso wxWidgetsMinicurso wxWidgets
Minicurso wxWidgets
 
Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013
 
Android
AndroidAndroid
Android
 
Rqt1
Rqt1Rqt1
Rqt1
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Kde comunidade
Kde comunidadeKde comunidade
Kde comunidade
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
RAD Studio 10.2 Tokyo
RAD Studio 10.2 TokyoRAD Studio 10.2 Tokyo
RAD Studio 10.2 Tokyo
 
Android: Uma nova maneira de pensar
Android: Uma nova maneira de pensarAndroid: Uma nova maneira de pensar
Android: Uma nova maneira de pensar
 
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
Linux, Docker, Open Source e Tecnologias Microsoft - Dezembro/2017
 

More from Sandro Andrade

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 ...Sandro Andrade
 
Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and BeyondArchitecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and BeyondSandro Andrade
 
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...Sandro Andrade
 
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...Sandro Andrade
 
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 BigDataSandro Andrade
 
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 SociaisSandro Andrade
 
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...Sandro Andrade
 

More from Sandro Andrade (7)

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 ...
 
Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and BeyondArchitecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
Architecting Qt Mobile Applications: Frameworks, Code Generators and Beyond
 
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
 
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
 
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...
 

Desenvolvendo Aplicações Android com Qt

  • 1. Desenvolvendo Aplicações Android com Qt Sandro Andrade sandroandrade@kde.org | sandroandrade.org | @andradesandro
  • 2. Objetivos ● Apresentar o Qt e os benefícios da sua utilização ● Apresentar uma visão geral das funcionalidades do Qt para desenvolvimento multiplataforma para dispositivos móveis e embarcados ● Apresentar os avanços mais recentes do Qt nesta área ● Proporcionar uma vivência prática ao desenvolver uma aplicação Android com Qt
  • 3. whoami ● Professor no Instituto Federal de Educação, Ciência e Tecnologia da Bahia – IFBA ● Desenvolvedor, projetista e arquiteto de software ● Pesquisador: engenharia de software + sistemas distribuídos ● Colaborador nos projetos de Software Livre Qt e KDE – QtModeling – KDevelop, Plasma e Minuet ● Foi membro do KDE Marketing Working Group ● Membro do Board de Diretores do KDE e.V.
  • 4. O Qt ● Toolkit multiplataforma para desenvolvimento de aplicações (www.qt.io) ● Oferece um amplo conjunto de funcionalidades para multimídia, programação em rede, banco de dados, testes, Bluetooth, OpenGL, programação multi-threaded, scripting, XML, web channel, etc ● Oferece três tecnologias principais para desenvolvimento de GUI: – Qt Widgets: C++ (oficial), Python, C#, Go, Haskell, Ruby – Qt Quick: QML + JS – Qt Webkit: HTML + CSS + JS
  • 5. O Qt ● Comparação entre as três tecnologias para GUI: Qt Widgets Qt Quick Qt Webkit Linguagens utilizadas C++ QML/JS HTML/CSS/JS Look n feel nativo’ ’ ✔ ✔ Look n feel customizado’ ’ ✔ ( )✔ GUI fluidas e animadas ✔ Suporte a touch screen ✔ Widgets padrao da industria ✔
  • 6. O Qt ● Comparação entre as três tecnologias para GUI: Qt Widgets Qt Quick Qt Webkit Model/View programming ✔ (✔) Rapid UI development ✔ ( )✔ Aceleracao por hardware ✔ Efeitos graficos ✔ Processamento de rich text ✔ ✔ Integracao de conteudo web existente ✔
  • 7. O Qt ● Por que usar? – É uma tecnologia madura (20 anos de existência) – É um toolkit extremamente produtivo (mesmo com C++ e melhor ainda com QML/JS) – É um toolkit bastante completo – É efetivo no suporte ao desenvolvimento multiplataforma: ● Linux/X11 ● Windows ● OS X ● Android ● IOS ● WinCE
  • 8. O Qt ● Por que usar? – Excelente documentação e comunidade bastante ativa – Excelente desempenho (aceleração via hardware no QML) – Diversas bibliotecas de terceiros baseadas no Qt (inqlude.org) – Open governance com licença dual: ● LGPL ● Comercial
  • 9. O Qt ● Quem usa? – Guitar Pro – Autodesk Maya – Skype – Virtualbox – VLC – KDE – Setores automotivo, IoT, médico e industrial
  • 10. O Qt ● Quem usa? – Guitar Pro – Autodesk Maya – Skype – Virtualbox – VLC – KDE – Setores automotivo, IoT, médico e industrial
  • 11. O Qt ● Quem usa? – Guitar Pro – Autodesk Maya – Skype – Virtualbox – VLC – KDE – Setores automotivo, IoT, médico e industrial
  • 12. O Qt ● Quem usa? – Guitar Pro – Autodesk Maya – Skype – Virtualbox – VLC – KDE – Setores automotivo, IoT, médico e industrial
  • 13. O Qt e o Mundo Mobile ● É uma longa história, na verdade … – 2000: Qt/Embedded + Qtopia – 2006: Qtopia em milhares de dispositivos (Sharp / Motorola)
  • 14. O Qt e o Mundo Mobile ● É uma longa história, na verdade … – 2009: lançamento do QML – 2010-2011: Qt no Symbian e MeeGo
  • 15. O Qt e o Mundo Mobile ● É uma longa história, na verdade … – 2011: projeto Necessitas (KDE) e o primeiro port do Qt para Android – 2013: primeiro technical-preview do suporte ao Android e iOS oficial do Qt ● Inclusão das plataformas BlackBerry, Sailfish/Jolla and Ubuntu Mobile – 2014: cross-platform Qt Purchasing API e Bluetooth LE – 2015: QML Qt Location e Qt Quick Controls for Embedded
  • 16. O Qt e o Android ● Solução: QPA + JNI ● O Qt Creator gera o arquivo .apk pra você ● Uma aplicação Qt para Android consiste de duas partes: – A aplicação em si, criada pelo desenvolvedor – Um laucher da aplicação Android, gerada automaticamente pelo Qt Creator
  • 17. O Qt e o Android ● O Qt Creator oferece três métodos de implantação: – Todas as dependências Qt empacotadas no .apk, ou – Uso do mecanismo de implantação Ministro para gerenciar dependências Qt – Implantar as bibliotecas do Qt em um diretório temporário (somente para propósitos de desenvolvimento) ● Start-up da aplicação: – No começo é apenas uma aplicação Java – Ocorre a carga das libs do Qt e o plugin do QPA – A função main da aplicação é invocada em uma nova thread
  • 18. O Qt e o Android ● Configuração do ambiente (passo-a-passo): – Criar um novo usuário (ex: android-devel) – Instalar os pacotes básicos de desenvolvimento: ● pacman -S --needed base-devel qt5 jdk jre git gdb wget – Baixar (www.qt.io) e instalar, no home do usuário android- devel, o Qt para Android – Após a instalação, executar o Qt Creator: ● Caminho “Tools/QtCreator/bin/qtcreator” na instalação do Qt
  • 19. O Qt e o Android ● Configuração do ambiente (passo-a-passo): – No Qt Creator, ir em Tools Options Android:→ → ● Clique nos botões de download do Android SDK e Android NDK ● Realize o download ● Informe o caminho das instalações nos respectivos campos – Encontre o número de API correspondente à versão do Android no seu dispositivo – Execute o Android SDK Manager (caminho “tools/android” na instalação do Android SDK) e selecione somente o grupo referente ao número de API do seu dispositivo – Instale os pacotes
  • 20. O Qt e o Android ● Configuração do ambiente (passo-a-passo): – Inicie o adb server (como root, sem usar o sudo): caminho “platform-tools/adb start-server” na instalação do Android SDK – Verifique se o seu dispositivo está com o modo developer ativado. Ative caso não esteja – Ligue seu dispositivo na porta USB do computador e confirme o pedido de permissão para depuração USB – Pronto: ao executar um projeto Qt com o kit do Android selecionado, o Qt Creator irá perguntar em qual dispositivo você deseja executar a aplicação (incluindo emuladores)
  • 21. O Qt e o Android ● Módulos Qt de uso específico em dispositivos móveis (a maioria é multiplataforma): – Qt Bluetooth (QML e C++): Android, iOS, Linux (BlueZ 4.x/5.x) e OS X – Qt Graphical Effects (QML) – Qt Positioning (QML e C++): Android, iOS, Linux (com GeoClue) e WinRT ● Fontes de posicionamento (ex: satélite, wifi, arquivos) são plugins – Qt Sensors (QML e C++): Android, iOS, SailFish e WinRT ● Acelerômetro, orientação, luz ambiente, dentre outros – Qt Quick Extras – Qt Android Extras: Qt Notifier – Qt Mac Extras
  • 22. Qt e Material Design ● Conjunto de diretrizes de design (linguagem visual) de UX do Google ● Três esforços diferentes relacionados ao Qt: – qml-material: https://github.com/papyros/qml-material – Technical preview no Qt 5.6, esperado para o Qt 5.7 – Plasma Components
  • 23. Qt e Material Design ● qml-material:
  • 24. Qt e Material Design ● qml-material: IFBA’s SICAD Mobile
  • 25. Qt e Material Design ● Hands-on: Niftly - RSS Reader
  • 26. Conclusões ● O Qt para Android já é bem estável para uso em produção ● A possibilidade do uso de um mesmo codebase para escrever aplicações para diversas plataformas móveis faz do Qt uma das soluções mais interessantes nesta área atualmente ● O QML não pára de evoluir ● qml-material x Qt 5.6 x plasma components (o que usar ?)
  • 27. Junte-se a nós! ● http://br.kde.org ● Lista de discussão: – https://mail.kde.org/mailman/listinfo/kde-br ● Canal de IRC: freenode #kde-brasil ● O KDE e.V. apoia a sua contribuição ● Participe do Google Summer of Code e do KDE Season of Code
  • 28. Desenvolvendo Aplicações Android com Qt OBRIGADO ! sandroandrade@kde.org | sandroandrade.org | @andradesandro