Desenvolvendo Aplicações Android com Qt

28
Desenvolvendo Aplicações Android com Qt Sandro Andrade [email protected] | sandroandrade.org | @andradesandro

Transcript of Desenvolvendo Aplicações Android com Qt

Page 1: Desenvolvendo Aplicações Android com Qt

Desenvolvendo Aplicações Android com Qt

Sandro Andrade

[email protected] | sandroandrade.org | @andradesandro

Page 2: Desenvolvendo Aplicações Android com Qt

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

Page 3: Desenvolvendo Aplicações 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.

Page 4: Desenvolvendo Aplicações Android com Qt

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

Page 5: Desenvolvendo Aplicações Android com Qt

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 ✔

Page 6: Desenvolvendo Aplicações Android com Qt

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

Page 7: Desenvolvendo Aplicações Android com Qt

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

Page 8: Desenvolvendo Aplicações Android com Qt

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

Page 9: Desenvolvendo Aplicações Android com Qt

O Qt● Quem usa?

– Guitar Pro

– Autodesk Maya

– Skype

– Virtualbox

– VLC

– KDE

– Setores automotivo, IoT,médico e industrial

Page 10: Desenvolvendo Aplicações Android com Qt

O Qt● Quem usa?

– Guitar Pro

– Autodesk Maya

– Skype

– Virtualbox

– VLC

– KDE

– Setores automotivo, IoT,médico e industrial

Page 11: Desenvolvendo Aplicações Android com Qt

O Qt● Quem usa?

– Guitar Pro

– Autodesk Maya

– Skype

– Virtualbox

– VLC

– KDE

– Setores automotivo, IoT,médico e industrial

Page 12: Desenvolvendo Aplicações Android com Qt

O Qt● Quem usa?

– Guitar Pro

– Autodesk Maya

– Skype

– Virtualbox

– VLC

– KDE

– Setores automotivo, IoT,médico e industrial

Page 13: Desenvolvendo Aplicações Android com Qt

O Qt e o Mundo Mobile● É uma longa história, na verdade …

– 2000: Qt/Embedded + Qtopia– 2006: Qtopia em milhares de dispositivos (Sharp / Motorola)

Page 14: Desenvolvendo Aplicações Android com Qt

O Qt e o Mundo Mobile● É uma longa história, na verdade …

– 2009: lançamento do QML– 2010-2011: Qt no Symbian e MeeGo

Page 15: Desenvolvendo Aplicações Android com Qt

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

Page 16: Desenvolvendo Aplicações Android com Qt

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

Page 17: Desenvolvendo Aplicações Android com Qt

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

Page 18: Desenvolvendo Aplicações Android com Qt

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

Page 19: Desenvolvendo Aplicações Android com 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

Page 20: Desenvolvendo Aplicações Android com Qt

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)

Page 21: Desenvolvendo Aplicações Android com Qt

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

Page 22: Desenvolvendo Aplicações Android com Qt

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

Page 23: Desenvolvendo Aplicações Android com Qt

Qt e Material Design● qml-material:

Page 24: Desenvolvendo Aplicações Android com Qt

Qt e Material Design● qml-material: IFBA’s SICAD Mobile

Page 25: Desenvolvendo Aplicações Android com Qt

Qt e Material Design● Hands-on: Niftly - RSS Reader

Page 26: Desenvolvendo Aplicações Android com Qt

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 ?)

Page 27: Desenvolvendo Aplicações Android com Qt

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

Page 28: Desenvolvendo Aplicações Android com Qt

Desenvolvendo Aplicações Android com Qt

OBRIGADO !

[email protected] | sandroandrade.org | @andradesandro