Este documento apresenta uma revisão sobre variabilidades em aplicações para o sistema Android. Ele discute trabalhos relacionados que identificaram desafios na portabilidade de aplicações móveis entre dispositivos, e descreve características e variabilidades da plataforma Android, como sensores, tamanhos de tela e versões de APIs, que devem ser consideradas no desenvolvimento de aplicativos para este sistema.
Identificando variabilidades em aplicações para android
1. Introdução
Desenvolvimento
Conclusão
Identificando variabilidades em aplicações para
Android
Adorilson Bezerra
Universidade Federal do Rio Grande do Norte
Departamento de Informática e Matemática Aplicada
8 de outubro de 2011
Adorilson Bezerra Identificando variabilidades em aplicações para Android
2. Introdução
Motivação
Desenvolvimento
Metodologia
Conclusão
Diversidade de aparelhos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
3. Introdução
Motivação
Desenvolvimento
Metodologia
Conclusão
Problema
Diferentes características dos dispositivos
Diferente disponibilidade de memória e tamanho máximo da
aplicação
Diferentes perfis (MIDP 1.0 e MIDP 2.0);
Diferentes implementações de um mesmo perfil em J2ME
(diferente JSRs);
APIs proprietárias e pacotes opcionais;
Bugs específicos
Línguas internacionais
Adorilson Bezerra Identificando variabilidades em aplicações para Android
4. Introdução
Motivação
Desenvolvimento
Metodologia
Conclusão
Metodologia
Leitura de trabalhos relacionados
Consulta à comunidade
Consulta à API
(http://developer.android.com/guide/basics/what-is-android.html)
Leitura de código-fonte de projetos FLOSS
Adorilson Bezerra Identificando variabilidades em aplicações para Android
5. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Aplicativos móveis (J2ME)
Vander Alves, Ivan Cardim, Heitor Vital, Pedro H. M. Sampaio,
Alexandre L. G. Damasceno, Paulo Borba, Geber Ramalho:
Comparative Analysis of Porting Strategies in J2ME Games.
ICSM 2005: 123-132
Pedro H. M. Sampaio, Alexandre L. G. Damasceno, Igor
Sampaio, Vander Alves, Geber Ramalho, Paulo Borba: Portando
Jogos em J2ME: Desafios, Estudo de Caso, e Diretrizes.
SCENTIA 2004 vol. 15
Adorilson Bezerra Identificando variabilidades em aplicações para Android
6. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
Estratégias
Incremental Approach: the Zaak Case
Nokia S60 -> Nokia S40
Redução do tamanho: 186K -> 63K
Carregamento de imagens
Program Transformation: The Rain of Fire
Nokia S40, Nokia S60 e Motorola T720 (ad hoc)
Java Transformation System (JaTS)
Preprocessing: The My Big Brother Case
8 versões para 50 aparelhos
Compilação condicional
Adorilson Bezerra Identificando variabilidades em aplicações para Android
7. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
Avaliação
Adorilson Bezerra Identificando variabilidades em aplicações para Android
8. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Comparative Analysis of Porting Strategies in J2ME Games
Lições aprendidas e boas práticas
Iniciar o desenvolvimento pelos dispositivos com maiores
restrições
É possível combinar as estratégias
Separar os interesses (código de lógico e código para elementos
gráficos, por exemplo)
Testar o software nos aparelhos reais
Manter uma base de bugs conhecidos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
9. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes
Aprofundamento do estudo de caso "Zaak"do artigo anterior
Categoriza as soluções atuais:
Ferramentas de pré-processamento (Antenna e J2ME Polish)
Diretrizes específicas (Motorola Port Guide)
Diretrizes amplas
Ferramentas semi-automáticas (Tira Jump)
Abordagens Formais (restrito a GUI)
Adorilson Bezerra Identificando variabilidades em aplicações para Android
10. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes
Efeitos no porte do código-fonte
Adorilson Bezerra Identificando variabilidades em aplicações para Android
11. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Portando Jogos em J2ME: Desafios, Estudo de Caso, e
Diretrizes
Síntese das atividades do estudo de caso
Adorilson Bezerra Identificando variabilidades em aplicações para Android
12. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Sobre Android
Benjamin Speckmann: The Android mobile platform. Eastern
Michigan University. 2008.
Jan Bosch: From Software Product Lines to Software
Ecosystems. SPLC 2009.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
13. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
The Android mobile platform
Android vs Symbian vs Windows Mobile
Adorilson Bezerra Identificando variabilidades em aplicações para Android
14. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
The Android mobile platform
Desenvolvimento para Android vs Desenvolvimento para
Symbian OS
Vantagens: todas
Desvantagens: nenhuma de ordem técnica
Adorilson Bezerra Identificando variabilidades em aplicações para Android
15. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
From Software Product Lines to Software Ecosystems
Um ecossistema de software é um conjunto de soluções de
software que possibilitam, suportam e automatizam atividades e
transações...
Adorilson Bezerra Identificando variabilidades em aplicações para Android
16. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
From Software Product Lines to Software Ecosystems
Sistemas operacionais
Característica: fornecedores de S.O.’s disponibilizam
ferramentas de desenvolvimento visando a
adotação do ecossistema por desenvolvedores de
aplicações
Fator de sucesso: minimização do esforço dos desenvolvedores
para a criação de aplicações
Desafio: rápida evolução dos dispositivos
Adorilson Bezerra Identificando variabilidades em aplicações para Android
17. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
O que é o Android
Android é um conjunto de softwares para dispositivos
móveis, incluindo sistema operacional, middleware e
aplicações chaves/básicas. O Android SDK provê as
ferramentas e API’s necessárias para desenvolvimento de
aplicações utilizando a linguagem de programação Java.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
18. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Características - independentes do aparelho
Framework de aplicações possibilitando reuso e troca de
componentes)
Maquina virtual Dalvik
Navegador web integrado (usando o motor WebKit)
SQLite para armazenamento local de dados
Suporte para midias comuns de audio, video e formatos de
imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
Ambiente de desenvolvimento inclue um emulador de dispositivo,
ferramentas para depuração, analise dinâmica de memória e
performance, e um plugin para o Eclipse IDE.
Adorilson Bezerra Identificando variabilidades em aplicações para Android
19. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Características - dependentes do aparelho
Otimizações gráficas graças a biblioteca 2D customizada;
gráficos 3D baseados em Open GL ES 1.0 (aceleração por
hardware opcional)
Telefonia GSM
Bluetooth, EDGE, 3G, e WiFi
Câmera, GPS, bússola, e acelerômetro
Adorilson Bezerra Identificando variabilidades em aplicações para Android
20. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Arquitetura
Adorilson Bezerra Identificando variabilidades em aplicações para Android
21. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Arquitetura
Aplicações: o Android é distribuído com diversas aplicações
Framework de aplicações: componentes para serem utilizadas no
desenvolvimento de aplicações
Bibliotecas: conjunto de bibliotecas em C/C++ usadas por várias
componentes do sistema
Runtime: bibliotecas básica do Java
Kernel Linux: versão 2.6
Adorilson Bezerra Identificando variabilidades em aplicações para Android
22. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Estrutura padrão de diretórios
Adorilson Bezerra Identificando variabilidades em aplicações para Android
23. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Dispositivos com ou sem sensores
Acelerômetro
Câmera
Luminosidade
Bluetooth
...
Adorilson Bezerra Identificando variabilidades em aplicações para Android
24. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Se tem acelerômetro...
Figura: Testando se o dispositivo tem acelerômetro
Adorilson Bezerra Identificando variabilidades em aplicações para Android
25. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Gráficos: 2D ou 3D
Figura: Testando se o dispositivo tem suporte para gráficos 3d
Adorilson Bezerra Identificando variabilidades em aplicações para Android
26. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Tamanhos e densidade das telas
Adorilson Bezerra Identificando variabilidades em aplicações para Android
27. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Mecanismo de interação
Teclado físico
Trackball
Botões de navegação (five-way navigation pad)
Raro esse tipo de restrição
Adorilson Bezerra Identificando variabilidades em aplicações para Android
28. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Versão da API
Adorilson Bezerra Identificando variabilidades em aplicações para Android
29. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Pacote de compatibilidade
Suporte estático para API’s mais recentes
A partir da API nível 4
Facilita o desenvolvimento na medida em que permite o
desenvolver se preocupar menos com a versão da API
Adorilson Bezerra Identificando variabilidades em aplicações para Android
30. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Versão do OpenGL ES
Adorilson Bezerra Identificando variabilidades em aplicações para Android
31. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
Android NDK
Suporte para desenvolvimento em código nativo
ARMv5TE (incluindo instruções Thumb-1)
ARMv7-A (incluindo instruções Thumb-2 e VFPv3-D16, com
suporte opcional para NEON/VFPv3-D32)
x86
Aumenta a complexidade sem necessariamente aumentar a
performance
Adorilson Bezerra Identificando variabilidades em aplicações para Android
32. Introdução Trabalhos relacionados
Desenvolvimento Plataforma Android
Conclusão Variabilidades em aplicações para Android
AndroidManifest.xml
"Promete"mas não cumpre
As restrições são válidas apenas para filtragem no Android
Market
Adorilson Bezerra Identificando variabilidades em aplicações para Android
33. Introdução
Dificuldades
Desenvolvimento
Trabalhos futuros
Conclusão
Dificuldades
Inexperiência com a plataforma
Ausência de trabalhos na área de LPS relacionados à plataforma
Adorilson Bezerra Identificando variabilidades em aplicações para Android
34. Introdução
Dificuldades
Desenvolvimento
Trabalhos futuros
Conclusão
Trabalhos futuros
Aprofundar a pesquisa
Adorilson Bezerra Identificando variabilidades em aplicações para Android
35. Introdução
Dificuldades
Desenvolvimento
Trabalhos futuros
Conclusão
Perguntas ?
Cuidado como você usa o Android. Ele sabe quando o
usuário é um macaco: http://is.gd/nDcoFc
Adorilson Bezerra Identificando variabilidades em aplicações para Android