Desenvolvendo Aplicações Android com Qt
Colaborando com Software Livre no KDE
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
● Apresentar o que é o KDE, suas tecnologias e como a comunidade está organizada
● Discutir as tendências atuais do KDE no desenvolvimento para dispositivos móveis
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
● Apresentar o que é o KDE, suas tecnologias e como a comunidade está organizada
● Discutir as tendências atuais do KDE no desenvolvimento para dispositivos móveis
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
● Apresentar o que é o KDE, suas tecnologias e como a comunidade está organizada
● Discutir as tendências atuais do KDE no desenvolvimento para dispositivos móveis
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.
Parte 1
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
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 ✔
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 ✔ ✔
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
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
O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2009: lançamento do QML
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
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:
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
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
● Dois 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
Qt e Material Design
Qt e Material Design
Qt e Material Design
Parte 2
Contribuindo com Software Livre no
KDE
(Re)conhecendo o KDE
Pessoas
4151 colaboradores em todo o mundo Quase 20 anos de existência
O que fazemos?
● Muita coisa :)
● Mas as tecnologias produzidas são:
1) Um workspace moderno e flexível (KDE Plasma) 2) Um conjunto de aplicações (KDE Applications) 3) Um conjunto de bibliotecas (KDE Frameworks)
KDE Plasma Desktop
KDE Plasma Mobile
KDE Plasma Mobile
KDE Applications
● Mais de 300 aplicações em diversas áreas:
– Jogos
– Aplicações Educacionais – Multimídia
– Ferramentas de Desenvolvimento
– Gerenciamento de Informações Pessoais – Internet
– Editoração gráfica – … e muito mais
KDE Applications
KDE Applications
KDE Applications
KDE Applications
KDE Applications
KDE Frameworks
SO (Linux, Windows, OS X, ...) Servidor Gráfico (X11, Wayland, ...)
C++ / Qt 5 / QML / JavaScript KDE Frameworks 5 KDE Plasma KDE Applications
60 novos módulos para o Qt: Compressão de arquivos Configuração do sistema Novos models e views Plotting Integração e detecção de HW Multithreading System notifications ... http://www.frameworks.org
A Comunidade e seu Ecossistema
Colaboradores
(desenvolvedores, testadores, tradutores, designers, etc) KDE e.V. (membros da associação) Empre sas KDE Free Qt Foundation Working Groups KDE e.V. Board of Directors Afiliados
A Comunidade e seu ecossistema
● Principais empresas no ecossistema KDE:
– KDAB
– BasysKom – Blue Systems
– ICS
A Comunidade e seu ecossistema
● Principais eventos:
– Akademy (encontro mundial dos colaboradores - Europa) – Akademy-ES (Espanha)
– Akademy-FR (França)
– LaKademy (encontro Latino-Americano) – Sprints:
● Randa Meetings (Suíça) ● PIM Sprint
● Plasma Sprint
● KDevelop/Kate Sprint ● ...
A Comunidade e seu ecossistema
O KDE no Brasil
● Maior expansão a partir de 2008, com diversas ações de divulgação e incentivo à contribuição
● Maior participação do KDE nas principais conferências de software livre do Brasil (FISL, Latinoware, etc)
● Palestras e minicursos em todo o Brasil
● Alta participação em eventos próprios do KDE no Brasil e no exterior
A Comunidade e seu ecossistema
A Comunidade e seu ecossistema
A Comunidade e seu ecossistema
A Comunidade e seu ecossistema
A Comunidade e seu ecossistema
● 4o Lakademy – 2016
– Universidade Federal do Estado do Rio de Janeiro (UNIRIO) – De 26 a 29 de maio de 2016
E daí ?
Por que eu devo me importar com isso ?Por que todos devem se importar com isso ?
Software Livre
Software Livre
Por quê ?Software Livre
Software Livre
Por quê ?Software Livre
Software Livre – como não contribuir
● “Não tenho tempo e/ou interesse ...” ● “Não estou preparado ainda ...”
● “Não sei programar ...”
● “Eles vão falar mal do meu código-fonte ...” ● “Sou uma pessoa boss-oriented ...”
● “São todos xiitas, comunistas ...”
● “Tenho dificuldades com a língua inglesa ...” ● “Gosto de trabalhar sozinho ...”
Nós temos história …
… mas ela está se
perdendo !
Onde estávamos ?
Onde estivemos ?
Onde estávamos ?
● *-2000 ● ● ● ● ●● Embora o Linux tenha chegado na UFBA ~1996
Onde estivemos ?
Sem a intenção de esgotar o assunto :)
● 2000
– Surgimento do GAVRI-IM / UFBA
● 2003
– Criação do PSL-BA
– 1o Festival GNU/Linux de Salvador
● 2004
– 1o Fórum Baiano de Software Livre – Hugo Braga desenvolve o ROX
Onde estivemos ?
● 2005
● 2o Festival de Software Livre da Bahia ● 2o Fórum Baiano de Software Livre ● Extinção do GAVRI-IM
● Lucas Rocha integra a equipe de desenvolvedores do GNOME
● 2006:
● Colivre é fundada
● Aurélio integra a equipe de desenvolvedores do Inkscape ● Valéssio começa a realizar contribuições com o Inkscape ● 3o Festival de Software Livre da Bahia
● Ampliação das atividades do GNU-Ruy ● Início do projeto Ekaati
Onde estivemos ?
● 2008
– Sandro e Tomaz integram a equipe de desenvolvedores do KDE
● 2009
– Sandro e Tomaz participam do Google Summer of Code / KDE – 4o Festival de Software Livre da Bahia / ENSL
● 2010
– Tomaz transforma o ROX (Eclipse) no Rocs (C++/Qt) e o lança mundialmente como parte do KDE
Onde estivemos ?
● 2011
– Caio Tiago e Krishnamurti Lélis realizam traduções de diversos projetos – Terceiro, Tiago e Tassia integram a equipe de desenvolvedores do Debian – Sandro ministra disciplina sobre desenvolvimento de Software Livre na
UFBa (GNOME, KDE, Drupal, Foswiki, Qt)
– Melissa e Aline participam do GNOME Outreach Program for Women
● 2012
Onde estivemos ?
● 2014
– Criação do Raul Hacker Club
● 2015
– Acontece, em Salvador, o 3o LaKademy (03-06 de Junho) – Sandro passa a fazer parte do Board de Diretores do KDE
Onde estamos ?
Período de ressaca / apatia
Falta de interesse / diminuição na procura
Bikeshedding na comunidade brasileira de Software Livre A insalubridade do Software Livre
Falta de incentivo na academia
Chega de idéias, discussões, planos e ...
AÇÕ
ES !!
!
Ações !
● Alunos como agentes catalisadores (SEMPRE) !
● DOJOs abertos de iniciação à contribuição em projetos de Software Livre
● Políticas públicas para adoção e contribuição em projetos de Software Livre
● Empreendedorismo com Software Livre
● Software Livre como oportunidade de carreira
● Divulgação e incentivo à participação em programas tais como o Google Summer of Code
Ações !
Ações !
● Top 10 instituições participantes do GSoC 2014:
Ações !
Ações !
● Retomada do Festival de Software Livre da Bahia
● Retomada do Encontro Nordestino de Software Livre ● Uso de Software Livre em atividades acadêmicas
● Fortalecimento das comunidades locais e brasileiras
● Divulgação do modus operandi básico de contribuição (rituais, dificuldades, soluções, arranjos sociais, etc)
● Maior presença no FISL, Latinoware, etc ● Sensibilização dos professores
Oportunidades de Carreira
● Software Livre não é mais somente um hobby de pessoas apaixonadas pelo que fazem
● É perfeitamente possível seguir carreira na área ● Geralmente inicia-se como voluntário, …
● … o software livre passa a ser sua grande vitrine para o mundo … ● … e você então pode trabalhar fazendo o que gosta
Conclusões
● Temos tradição, temos potencial, mas os últimos três anos foram desanimadores para o Software Livre na Bahia
● Estamos em um momento apático e de ressaca, é necessário mudar !
● O Software Livre abre um mundo de oportunidades de carreira, experiências, trabalhos gratificantes e novos amigos
● Empenhe-se, encontre sua turma e traga toda a sua motivação e força de vontade para o Software Livre na Bahia !
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