SlideShare uma empresa Scribd logo
1 de 71
ALUNO: Walanem Figueiredo Silva Jr.
ORIENTADOR: Carlos Alberto Soares Ribeiro
Graduação em Ciência da Computação – UFF
• Introdução
• Open Handset Alliance
• O que é o Android?
• Arquitetura do Android
• Dalvik Virtual Machine
• Aplicações Android
• Publicação de Aplicativos
• Presente e Futuro do Android
• Projeto prático
• Referências
Introdução
Introdução
• Panorama Contextual
– Mais de 7 bilhões de aparelhos de celular ativos;
– Mais linhas de celular do que pessoas no mundo;
Introdução
• Propósito Primário
– Inicialmente, aparelhos projetados apenas para atender e
efetuar ligações;
– Posteriormente, novas funcionalidades foram adicionadas
(Ex: Jogos, Internet)
– Limitação tecnológica;
Introdução
• Revolução Móvel
– Ideia de ‘‘mobilidade’’ disseminada de forma cada vez
mais incisiva;
– Celulares representam dispositivos leves, e praticamente
indispensáveis para qualquer pessoa;
• Novas funcionalidades incorporadas
Introdução
• Revolução Móvel (cont.)
– Introduzido o conceito de ‘‘smartphone’’ (telefone
inteligente);
– Diversas funcionalidades reunidas em um só aparelho;
Introdução
• Revolução Móvel (cont.)
– Demanda por uma plataforma centralizada;
– Gerenciamento de recursos de forma simples e flexível;
– Necessidade de um Sistema Operacional padronizado para
dispositivos móveis;
• Desafios
– Portabilidade de aplicações e recursos;
– Alta diversidade de tipos e modelos de dispostivos;
Open Handset
Alliance
Open Handset Alliance
• Aliança
– Grupo formado por gigantes da telefonia mundial
– Liderança:
• Objetivos
– Criação de padrões abertos para telefonia móvel;
– Inovações na área móvel, oferecendo experiências mais
ricas e acessíveis para os usuários.
Open Handset Alliance
O que é o Android?
• Definição
– Plataforma integrada para dispositivos móveis;
– Composta por um Sistema Operacional, Middleware e
aplicações;
• Características
– Transparência: Possibilidade de acesso a recursos do
dispositivo por meio de API’s, ou seja, aplicativos podem
utilizar qualquer recurso disponibilizado pelo Sistema
Operacional;
O que é o Android?
• Características (cont.)
– Não-distinção: Qualquer aplicativo pode ser estendido (ou
até mesmo substituído) por outro não nativo;
– Web-ready: Aplicativos Android podem exibir páginas da
HTML (inclusive HTML5), CSS e Javascript;
– Paralelismo: O Android é um ambiente multitarefa, no
qual os aplicativos podem ser executados em paralelo
(multitasking);
O que é o Android?
• Principais concorrentes
O que é o Android?
Arquitetura do
Android
• Camadas
Arquitetura do Android
• Applications
– Camada de alto nível;
– Local onde os aplicativos são executados:
• Browser, calendário, agenda de contatos, jogos, etc.
• Application Framework
– Engloba API’s e gerenciadores de recursos;
– Framework de componentes (úteis para desenvolvedores);
Arquitetura do Android
• Libraries
– Engloba as principais bibliotecas utilizadas pelo sistema:
• LibC, SQLite, OpenGL, entre outras;
• Linux Kernel
– Núcleo do S.O. Android (agora utiliza versão 3.14);
– Gerenciamento de processos, energia, drivers de hardware
e configurações de segurança;
– Responsável pela abstração do hardware do dispositivo;
Arquitetura do Android
• Android Runtime
– Camada-chave, onde se encontra a Dalvik;
– Responsável, por exemplo, pelo multitasking e
gerenciamento de memória;
– Garante conceito de ‘’sandbox’’ de aplicações, ou seja:
• Aplicações não podem interferir em outras, e nem no S.O.;
• Aplicações não podem interferir diretamente no hardware;
• Não existe a possibilidade de vinculação de aplicações a um
hardware específico;
Arquitetura do Android
• Android Runtime (cont.)
– Independência de aplicações:
• Cada aplicação representa um processo distinto no sistema;
• Processos se comunicam através de troca de mensagens;
• Kernel garante o isolamento de espaço em memória;
• Em suma: aplicações ocupam o mesmo espaço em memória, mas
cada uma delas representa uma instância distinta da Dalvik.
Arquitetura do Android
Dalvik Virtual
Machine
• Propósito
– Abstração de hardware dos dispositivos que executam o
Android;
– Otimizada para aparelhos móveis, que precisam consumir
o mínimo de memória, bateria e processamento possível.
Dalvik Virtual Machine
• Conceitos
– Dalvik funciona como uma instância isolada de processo;
– Cada aplicação roda em seu processo, que executa como
uma unidade totalmente granular:
• Em caso de crash, não afeta o sistema e nem outros processos em
execução paralela;
• Garantia de segurança;
– Compilador que segue o padrão Just in Time (JIT):
• A cada execução do app, a DVM traduz parte dos bytecodes em
código de máquina (binário);
• Assim, a cada passo, o sistema realiza mais cache destes recursos;
• Projetado desta forma para reduzir o tempo de warm-up.
Dalvik Virtual Machine
• Conceitos (cont.)
– ‘’init’’ é o processo pai de todos os processos Android;
– Sempre que uma aplicação Android é executada, a
seguinte sequência de passos é executada:
1. “init’’ cria um subprocesso chamado zygote;
2. zygote carrega e inicializa uma instância da DVM;
3. zygote contatcta o ActivityManager que se responsabiliza por
executar as classes Java referentes a esta aplicação;
Dalvik Virtual Machine
• Conceitos (cont.)
Dalvik Virtual Machine
• Origem
– Dalvik é um dos produtos da Open Handset Alliance;
– O nome vem de uma pequena cidade da Islândia, local de
origem de seu principal conceptor, Dan Bornstein;
Dalvik Virtual Machine
• Funcionamento
– A Dalvik não é a JVM!
– Embutido no Android, existe uma ferramenta chamada dx,
responsável por transformar os arquivos com extensão
.class em arquivos de extensão .dex (Dalvik Executable);
– Em outras palavras, o bytecode Dalvik pode ser executado
em qualquer dispositivo Android, independentemente do
hardware;
Dalvik Virtual Machine
• Funcionamento (cont.)
– Aplicações Android são compiladas em arquivos .dex, que
são empacotados em um único arquivo no dispositivo, que
possui a extensão .apk (Android Package) ;
Dalvik Virtual Machine
• Funcionamento (cont.)
Dalvik Virtual Machine
• Motivações de criação
– A Dalvik não utiliza as bibliotecas-padrão do Java, que se
dividem em 3 grandes grupos:
• Java Standard Edition ;
• Java Enterprise Edition;
• Java Micro Edition;
– O Android também não inclui bibliotecas gráficas do Java
(AWT e Swing). Em vez disso, incluiu suas próprias.
Dalvik Virtual Machine
• Motivações de criação (cont.)
– Em suma, a Dalvik não utiliza a biblioteca Java class,
presente no ambiente de execução Java, mas sim, uma
alternative open-source:
– Decisão tomada pois mesmo o Java, suas bibliotecas e
ferramentas sendo gratuitas, a JVM, em si, não é:
• Possibilidade de problemas de licença com a Oracle;
• …o que não adiantou: inúmeros processos ocorridos!
Dalvik Virtual Machine
Aplicações Android
• Componentes de Aplicação
– Conjunto de componentes, que desempenham papéis
específicos e integrados, representam pilares da aplicação;
Aplicações Android
• Intent
– Representa a forma padrão de ativação de componentes;
– Envia uma mensagem assíncrona ao Sistema Operacional,
explicitando a intenção de se realizar uma ação:
• Iniciar uma nova Activity da aplicação,
• Realizar uma chamada telefônica para determinado número, etc.;
– A classe Intent contém uma lista pré-determinada de
constantes, para execução de ações gerais, tais como:
• ACTION_CALL: Ligar para um número de telefone;
• ACTION_VIEW: Exibir informações através de uma Activity;
Aplicações Android
• Intent (cont.)
– Filtragem de Intent leva em consideração 3 aspectos:
• Ação;
• Categoria;
• Opcionalmente, informações adicionais, como URI e MIME Type;
Aplicações Android
• Activity
– Representa uma interface visual da aplicação (tela);
– Local onde elementos gráficos, chamados de views, são
dispostos, de forma a compor a tela;
– Interação com o usuário;
– Representam estruturas independentes entre si e,
geralmente, há uma Activity principal, que representa o
ponto de partida da aplicação;
Aplicações Android
• Activity (cont.)
– Declaração de Activity no arquivo AndroidManifest.xml
Aplicações Android
• Services
– Executam ações em background, ligados a operações de
longa duração ou até mesmo processamentos remotos;
– Não possuem interface gráfica, e executam em background
mesmo se o usuário inicia novas aplicações:
• Player de música;
• Transferência de dados;
– Devem ser usados sempre que uma ação precisa se
estender além do escopo da aplicação;
Aplicações Android
• Services (cont.)
– Declaração de Service no arquivo AndroidManifest.xml
Aplicações Android
• Content Provider
– Gerencia formas de acesso padronizadas e segurança de
repositórios de dados entre aplicações distintas;
– Acessos ao Content Provider são feitos através de um
cliente específico, ou seja, um Content Resolver:
• Elo de ligação entre o ContentProvider e a aplicação cliente;
• Buscas realizadas através do método query() ;
• Encaminha a requisição para o Content Provider adequado,
através da autoridade da query-string;
– Necessidade de implementação dos métodos CRUD;
Aplicações Android
• Content Provider (cont.)
– Definição de Content URI :
• Prefixo/Scheme: Prefixo padrão ‘’content://’’, que garante o
tratamento da requisição por um Content Provider adequado;
• Autoridade: Identificador único do Content Provider. Geralmente
possui o caminho completo da classe na aplicação;
• Path: Caminho que o Content Provider utiliza para efetuar a query
na tabela correta;
• Parameter: Parâmetro adicional que denota o intuito de se obter
um registro específico da tabela, utilizando o campo _ID;
Ex: content://my_library/books/13
Aplicações Android
• Content Provider (cont.)
– Definição de Content Provider no AndroidManifest.xml:
Aplicações Android
• Broadcast Receiver
– Android implementa envio de mensagens através do
padrão ‘’Observer’’
• Intents são, por padrão, enviadas por meio de broadcast;
• As mensagens são enviadas sem saber quem as irá receber;
• Qualquer aplicação está apta a receber estas mensagens;
• Filtros são necessários para decodificar o receptor correto;
– Broadcast Receivers ‘’ouvem’’ mensagens enviadas por
qualquer aplicação
• Se as tags da mensagem corresponderem a um determinado filtro,
o Broadcast Receiver é instanciado, se já não o estiver;
Aplicações Android
• Broadcast Receiver (cont.)
– Exemplos de constantes de Intents nativas, cujos
componentes-alvo são Broadcast Receivers:
• ACTION_BOOT_COMPLETE (Total inicialização do S.O.);
• ACTION_HEADSET_PLUG (Aviso de Headset inserido ou retirado);
• ACTION_BATTERY_LOW (Aviso de nível crítico de bateria);
Aplicações Android
• Broadcast Receiver (cont.)
– Broadcast Receivers podem ser registrados de 2 formas:
• Dinamicamente, através do método registerBroadcast();
• Via AndroidManifest.xml, através da tag <receiver>;
Aplicações Android
• Necessidade de interação? Notificações!
– Canal de comunicação entre componentes;
– Exibem informações para o usuário;
– Podem emitir som, piscar de LEDs e até mesmo vibrações;
Aplicações Android
Publicação de
Aplicativos
• Ciclo de vida de um aplicativo
– Setup: Instalação do ambiente Android (SDK), criação de
AVD’s e conexão de dispositivos-alvo;
– Development: Desenvolvimento de código do projeto
referente ao aplicativo;
– Debugging/Testing: Execução da aplicação em modo
Debug e utilização de ferramentas diversas de depuração
como a classe android.util.Log;
Publicação de Aplicativos
• Publishing
Publicação de Aplicativos
• Google Play
– Portal oficial de distribuição de aplicativos Android;
– Possui guidelines e políticas de submissão de apps, como:
• Não permite conteúdos considerados como spam;
• Garantia de não infrigimento da propriedade intelectual de
aplicativos de terceiros;
• Proibição de qualquer material pornográfico em apps;
• Não permite upload de apps que coletam informações, com fim
malicioso, sem o consentimento do usuário (spywares)
Publicação de Aplicativos
Presente e futuro
do Android
• Presente
– Android Lollipop (5.0)
Presente e futuro do Android
• Principais features
– Novidades em animações e transições;
– Notificações inteligentes e configuráveis;
– Projeto Volta, que irá oferecer maior eficiência no
consumo de bateria;
– Novas APIs de suporte a multimedia tunneling (como o 4K);
– Melhorias significativas em renderização gráfica e áudio;
– Material design;
– ART nativo;
Presente e futuro do Android
• Material design
– Padronização de comportamento visual entre dispositivos;
– Novas APIs para temas, widgets e views;
– Adição do conceito de ‘’eixo Z’’ em views (elevação 3D);
Presente e futuro do Android
• ART
– Implementa a abordagem ‘’Ahead of Time’’ (AoT);
• Realiza pré-compilação do bytecode (via dex2oat) em linguagem
de máquina (binário) no ato da instalação do app no sistema;
• Ganhos de performance em garbage collection;
• Transforma o código em uma dependência do sistema;
• Menor uso de CPU, logo, uma redução do consumo de bateria;
Presente e futuro do Android
• Novas frentes
Presente e futuro do Android
• Futuro
– Números de crescimento
• Cerca de 75% dos smartphones mundiais rodam o Android;
• Mais de 1 milhão de novas ativações ocorrendo diariamente;
• 1 bilhão de usuários ativos mensalmente nos serviços do Google;
Presente e futuro do Android
• Previsão de vendas de smartphones (IDC)
Presente e futuro do Android
Projeto prático
• PS Gamers
– App Android de consulta a dados da Playstation Network;
– Possibilita ao usuário visualizar diversas informações, como:
• Perfil;
• Level, progresso e escada de troféus;
• Lista de games;
• Troféus conquistados por game;
• Detalhes de troféu;
• Amigos online;
• Consulta de games e troféus de cada amigo;
Projeto Prático
• Login e Home
Projeto Prático
• Trophy ladder e Game list
Projeto Prático
• Game trophies e Trophy details
Projeto Prático
• Online friends e Offline friends
Projeto Prático
• Friend profile e Friend game list
Projeto Prático
Referências
• Referências utilizadas
 http://developer.android.com/reference/
 http://oglobo.globo.com/tecnologia/eric-schmidt-preve-um-
futuro-com-android-para-todos-4097588
 http://www.idc.com/prodserv/smartphone-os-market-
share.jsp
 http://www.linuxforu.com/2011/06/virtual-machines-for-
abstraction-dalvik-vm/
 http://developer.android.com/about/versions/lollipop.html;
 http://www.google.com/design/spec/material-
design/introduction.html
Referências
• Referências utilizadas (cont.)
 http://android.stackexchange.com/questions/7802/why-
does-dalvik-virtual-machine-need-to-run-in-every-process
 http://developer.android.com/distribute/tools/launch-
checklist.html
 http://www.electronicsweekly.com/eyes-on-android/what-
is/what-is-the-dalvik-virtual-machine-2011-10/
 https://software.intel.com/en-us/blogs/2014/06/18/art-vs-
dalvik-introducing-the-new-android-x86-runtime
 http://pocketnow.com/2014/05/06/q1-2014-shipment-
numbers
Referências
Perguntas?
Obrigado pela atenção!

Mais conteúdo relacionado

Mais procurados

LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASOs Fantasmas !
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Jose Berardo
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
Desenvolvimento Android: Aula 01
Desenvolvimento Android: Aula 01Desenvolvimento Android: Aula 01
Desenvolvimento Android: Aula 01Gustavo Zimmermann
 
PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android Fundação Vanzolini
 
Revista programar 23
Revista programar 23Revista programar 23
Revista programar 23Walmir Neto
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoRegis Magalhães
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo Almeida
 
FLISoL 2014 Aquidauana - Porque usar Software Livre
FLISoL 2014 Aquidauana - Porque usar Software Livre FLISoL 2014 Aquidauana - Porque usar Software Livre
FLISoL 2014 Aquidauana - Porque usar Software Livre Bruno Alexandre
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rqKMILT
 

Mais procurados (20)

Apostila sobre sistema operativo
Apostila sobre   sistema operativoApostila sobre   sistema operativo
Apostila sobre sistema operativo
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
Desenvolvimento Android: Aula 01
Desenvolvimento Android: Aula 01Desenvolvimento Android: Aula 01
Desenvolvimento Android: Aula 01
 
Trabalho android
Trabalho androidTrabalho android
Trabalho android
 
Android
AndroidAndroid
Android
 
PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android PALESTRA :: Desenvolvimento para plataforma Android
PALESTRA :: Desenvolvimento para plataforma Android
 
Android
AndroidAndroid
Android
 
Android
Android Android
Android
 
Revista programar 23
Revista programar 23Revista programar 23
Revista programar 23
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
FLISoL 2014 Aquidauana - Porque usar Software Livre
FLISoL 2014 Aquidauana - Porque usar Software Livre FLISoL 2014 Aquidauana - Porque usar Software Livre
FLISoL 2014 Aquidauana - Porque usar Software Livre
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rq
 
Revista Programar 41
Revista Programar 41Revista Programar 41
Revista Programar 41
 
Usando vitual box parte 1
Usando vitual box   parte 1Usando vitual box   parte 1
Usando vitual box parte 1
 
Revista programar 38
Revista programar 38Revista programar 38
Revista programar 38
 

Semelhante a Guia completo sobre o Android: arquitetura, Dalvik VM, aplicativos e mais

Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao AndroidBruno Lui
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android NooclixIury Teixeira
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013SpinEngenharia
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Desenvolvendo Soluções com Android
Desenvolvendo Soluções com AndroidDesenvolvendo Soluções com Android
Desenvolvendo Soluções com Androidjgbirk
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao androidPaulo Remoli
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Iniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidIniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidSalvador Torres
 
Introdução a Arquitetura Android
Introdução a Arquitetura AndroidIntrodução a Arquitetura Android
Introdução a Arquitetura AndroidMaycon Viana Bordin
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo OliveiraRonildo Oliveira
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 

Semelhante a Guia completo sobre o Android: arquitetura, Dalvik VM, aplicativos e mais (20)

Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Android
AndroidAndroid
Android
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Desenvolvendo Soluções com Android
Desenvolvendo Soluções com AndroidDesenvolvendo Soluções com Android
Desenvolvendo Soluções com Android
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao android
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Iniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google AndroidIniciando o Desenvolvimento para o Google Android
Iniciando o Desenvolvimento para o Google Android
 
Introdução a Arquitetura Android
Introdução a Arquitetura AndroidIntrodução a Arquitetura Android
Introdução a Arquitetura Android
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo Oliveira
 
Programe seu androide
Programe seu androidePrograme seu androide
Programe seu androide
 
Programe seu androide
Programe seu androidePrograme seu androide
Programe seu androide
 
Programe seu androide
Programe seu androidePrograme seu androide
Programe seu androide
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 

Guia completo sobre o Android: arquitetura, Dalvik VM, aplicativos e mais

  • 1. ALUNO: Walanem Figueiredo Silva Jr. ORIENTADOR: Carlos Alberto Soares Ribeiro Graduação em Ciência da Computação – UFF
  • 2. • Introdução • Open Handset Alliance • O que é o Android? • Arquitetura do Android • Dalvik Virtual Machine • Aplicações Android • Publicação de Aplicativos • Presente e Futuro do Android • Projeto prático • Referências
  • 4. Introdução • Panorama Contextual – Mais de 7 bilhões de aparelhos de celular ativos; – Mais linhas de celular do que pessoas no mundo;
  • 5. Introdução • Propósito Primário – Inicialmente, aparelhos projetados apenas para atender e efetuar ligações; – Posteriormente, novas funcionalidades foram adicionadas (Ex: Jogos, Internet) – Limitação tecnológica;
  • 6. Introdução • Revolução Móvel – Ideia de ‘‘mobilidade’’ disseminada de forma cada vez mais incisiva; – Celulares representam dispositivos leves, e praticamente indispensáveis para qualquer pessoa; • Novas funcionalidades incorporadas
  • 7. Introdução • Revolução Móvel (cont.) – Introduzido o conceito de ‘‘smartphone’’ (telefone inteligente); – Diversas funcionalidades reunidas em um só aparelho;
  • 8. Introdução • Revolução Móvel (cont.) – Demanda por uma plataforma centralizada; – Gerenciamento de recursos de forma simples e flexível; – Necessidade de um Sistema Operacional padronizado para dispositivos móveis; • Desafios – Portabilidade de aplicações e recursos; – Alta diversidade de tipos e modelos de dispostivos;
  • 10. Open Handset Alliance • Aliança – Grupo formado por gigantes da telefonia mundial – Liderança:
  • 11. • Objetivos – Criação de padrões abertos para telefonia móvel; – Inovações na área móvel, oferecendo experiências mais ricas e acessíveis para os usuários. Open Handset Alliance
  • 12. O que é o Android?
  • 13. • Definição – Plataforma integrada para dispositivos móveis; – Composta por um Sistema Operacional, Middleware e aplicações; • Características – Transparência: Possibilidade de acesso a recursos do dispositivo por meio de API’s, ou seja, aplicativos podem utilizar qualquer recurso disponibilizado pelo Sistema Operacional; O que é o Android?
  • 14. • Características (cont.) – Não-distinção: Qualquer aplicativo pode ser estendido (ou até mesmo substituído) por outro não nativo; – Web-ready: Aplicativos Android podem exibir páginas da HTML (inclusive HTML5), CSS e Javascript; – Paralelismo: O Android é um ambiente multitarefa, no qual os aplicativos podem ser executados em paralelo (multitasking); O que é o Android?
  • 15. • Principais concorrentes O que é o Android?
  • 18. • Applications – Camada de alto nível; – Local onde os aplicativos são executados: • Browser, calendário, agenda de contatos, jogos, etc. • Application Framework – Engloba API’s e gerenciadores de recursos; – Framework de componentes (úteis para desenvolvedores); Arquitetura do Android
  • 19. • Libraries – Engloba as principais bibliotecas utilizadas pelo sistema: • LibC, SQLite, OpenGL, entre outras; • Linux Kernel – Núcleo do S.O. Android (agora utiliza versão 3.14); – Gerenciamento de processos, energia, drivers de hardware e configurações de segurança; – Responsável pela abstração do hardware do dispositivo; Arquitetura do Android
  • 20. • Android Runtime – Camada-chave, onde se encontra a Dalvik; – Responsável, por exemplo, pelo multitasking e gerenciamento de memória; – Garante conceito de ‘’sandbox’’ de aplicações, ou seja: • Aplicações não podem interferir em outras, e nem no S.O.; • Aplicações não podem interferir diretamente no hardware; • Não existe a possibilidade de vinculação de aplicações a um hardware específico; Arquitetura do Android
  • 21. • Android Runtime (cont.) – Independência de aplicações: • Cada aplicação representa um processo distinto no sistema; • Processos se comunicam através de troca de mensagens; • Kernel garante o isolamento de espaço em memória; • Em suma: aplicações ocupam o mesmo espaço em memória, mas cada uma delas representa uma instância distinta da Dalvik. Arquitetura do Android
  • 23. • Propósito – Abstração de hardware dos dispositivos que executam o Android; – Otimizada para aparelhos móveis, que precisam consumir o mínimo de memória, bateria e processamento possível. Dalvik Virtual Machine
  • 24. • Conceitos – Dalvik funciona como uma instância isolada de processo; – Cada aplicação roda em seu processo, que executa como uma unidade totalmente granular: • Em caso de crash, não afeta o sistema e nem outros processos em execução paralela; • Garantia de segurança; – Compilador que segue o padrão Just in Time (JIT): • A cada execução do app, a DVM traduz parte dos bytecodes em código de máquina (binário); • Assim, a cada passo, o sistema realiza mais cache destes recursos; • Projetado desta forma para reduzir o tempo de warm-up. Dalvik Virtual Machine
  • 25. • Conceitos (cont.) – ‘’init’’ é o processo pai de todos os processos Android; – Sempre que uma aplicação Android é executada, a seguinte sequência de passos é executada: 1. “init’’ cria um subprocesso chamado zygote; 2. zygote carrega e inicializa uma instância da DVM; 3. zygote contatcta o ActivityManager que se responsabiliza por executar as classes Java referentes a esta aplicação; Dalvik Virtual Machine
  • 26. • Conceitos (cont.) Dalvik Virtual Machine
  • 27. • Origem – Dalvik é um dos produtos da Open Handset Alliance; – O nome vem de uma pequena cidade da Islândia, local de origem de seu principal conceptor, Dan Bornstein; Dalvik Virtual Machine
  • 28. • Funcionamento – A Dalvik não é a JVM! – Embutido no Android, existe uma ferramenta chamada dx, responsável por transformar os arquivos com extensão .class em arquivos de extensão .dex (Dalvik Executable); – Em outras palavras, o bytecode Dalvik pode ser executado em qualquer dispositivo Android, independentemente do hardware; Dalvik Virtual Machine
  • 29. • Funcionamento (cont.) – Aplicações Android são compiladas em arquivos .dex, que são empacotados em um único arquivo no dispositivo, que possui a extensão .apk (Android Package) ; Dalvik Virtual Machine
  • 31. • Motivações de criação – A Dalvik não utiliza as bibliotecas-padrão do Java, que se dividem em 3 grandes grupos: • Java Standard Edition ; • Java Enterprise Edition; • Java Micro Edition; – O Android também não inclui bibliotecas gráficas do Java (AWT e Swing). Em vez disso, incluiu suas próprias. Dalvik Virtual Machine
  • 32. • Motivações de criação (cont.) – Em suma, a Dalvik não utiliza a biblioteca Java class, presente no ambiente de execução Java, mas sim, uma alternative open-source: – Decisão tomada pois mesmo o Java, suas bibliotecas e ferramentas sendo gratuitas, a JVM, em si, não é: • Possibilidade de problemas de licença com a Oracle; • …o que não adiantou: inúmeros processos ocorridos! Dalvik Virtual Machine
  • 34. • Componentes de Aplicação – Conjunto de componentes, que desempenham papéis específicos e integrados, representam pilares da aplicação; Aplicações Android
  • 35. • Intent – Representa a forma padrão de ativação de componentes; – Envia uma mensagem assíncrona ao Sistema Operacional, explicitando a intenção de se realizar uma ação: • Iniciar uma nova Activity da aplicação, • Realizar uma chamada telefônica para determinado número, etc.; – A classe Intent contém uma lista pré-determinada de constantes, para execução de ações gerais, tais como: • ACTION_CALL: Ligar para um número de telefone; • ACTION_VIEW: Exibir informações através de uma Activity; Aplicações Android
  • 36. • Intent (cont.) – Filtragem de Intent leva em consideração 3 aspectos: • Ação; • Categoria; • Opcionalmente, informações adicionais, como URI e MIME Type; Aplicações Android
  • 37. • Activity – Representa uma interface visual da aplicação (tela); – Local onde elementos gráficos, chamados de views, são dispostos, de forma a compor a tela; – Interação com o usuário; – Representam estruturas independentes entre si e, geralmente, há uma Activity principal, que representa o ponto de partida da aplicação; Aplicações Android
  • 38. • Activity (cont.) – Declaração de Activity no arquivo AndroidManifest.xml Aplicações Android
  • 39. • Services – Executam ações em background, ligados a operações de longa duração ou até mesmo processamentos remotos; – Não possuem interface gráfica, e executam em background mesmo se o usuário inicia novas aplicações: • Player de música; • Transferência de dados; – Devem ser usados sempre que uma ação precisa se estender além do escopo da aplicação; Aplicações Android
  • 40. • Services (cont.) – Declaração de Service no arquivo AndroidManifest.xml Aplicações Android
  • 41. • Content Provider – Gerencia formas de acesso padronizadas e segurança de repositórios de dados entre aplicações distintas; – Acessos ao Content Provider são feitos através de um cliente específico, ou seja, um Content Resolver: • Elo de ligação entre o ContentProvider e a aplicação cliente; • Buscas realizadas através do método query() ; • Encaminha a requisição para o Content Provider adequado, através da autoridade da query-string; – Necessidade de implementação dos métodos CRUD; Aplicações Android
  • 42. • Content Provider (cont.) – Definição de Content URI : • Prefixo/Scheme: Prefixo padrão ‘’content://’’, que garante o tratamento da requisição por um Content Provider adequado; • Autoridade: Identificador único do Content Provider. Geralmente possui o caminho completo da classe na aplicação; • Path: Caminho que o Content Provider utiliza para efetuar a query na tabela correta; • Parameter: Parâmetro adicional que denota o intuito de se obter um registro específico da tabela, utilizando o campo _ID; Ex: content://my_library/books/13 Aplicações Android
  • 43. • Content Provider (cont.) – Definição de Content Provider no AndroidManifest.xml: Aplicações Android
  • 44. • Broadcast Receiver – Android implementa envio de mensagens através do padrão ‘’Observer’’ • Intents são, por padrão, enviadas por meio de broadcast; • As mensagens são enviadas sem saber quem as irá receber; • Qualquer aplicação está apta a receber estas mensagens; • Filtros são necessários para decodificar o receptor correto; – Broadcast Receivers ‘’ouvem’’ mensagens enviadas por qualquer aplicação • Se as tags da mensagem corresponderem a um determinado filtro, o Broadcast Receiver é instanciado, se já não o estiver; Aplicações Android
  • 45. • Broadcast Receiver (cont.) – Exemplos de constantes de Intents nativas, cujos componentes-alvo são Broadcast Receivers: • ACTION_BOOT_COMPLETE (Total inicialização do S.O.); • ACTION_HEADSET_PLUG (Aviso de Headset inserido ou retirado); • ACTION_BATTERY_LOW (Aviso de nível crítico de bateria); Aplicações Android
  • 46. • Broadcast Receiver (cont.) – Broadcast Receivers podem ser registrados de 2 formas: • Dinamicamente, através do método registerBroadcast(); • Via AndroidManifest.xml, através da tag <receiver>; Aplicações Android
  • 47. • Necessidade de interação? Notificações! – Canal de comunicação entre componentes; – Exibem informações para o usuário; – Podem emitir som, piscar de LEDs e até mesmo vibrações; Aplicações Android
  • 49. • Ciclo de vida de um aplicativo – Setup: Instalação do ambiente Android (SDK), criação de AVD’s e conexão de dispositivos-alvo; – Development: Desenvolvimento de código do projeto referente ao aplicativo; – Debugging/Testing: Execução da aplicação em modo Debug e utilização de ferramentas diversas de depuração como a classe android.util.Log; Publicação de Aplicativos
  • 51. • Google Play – Portal oficial de distribuição de aplicativos Android; – Possui guidelines e políticas de submissão de apps, como: • Não permite conteúdos considerados como spam; • Garantia de não infrigimento da propriedade intelectual de aplicativos de terceiros; • Proibição de qualquer material pornográfico em apps; • Não permite upload de apps que coletam informações, com fim malicioso, sem o consentimento do usuário (spywares) Publicação de Aplicativos
  • 53. • Presente – Android Lollipop (5.0) Presente e futuro do Android
  • 54. • Principais features – Novidades em animações e transições; – Notificações inteligentes e configuráveis; – Projeto Volta, que irá oferecer maior eficiência no consumo de bateria; – Novas APIs de suporte a multimedia tunneling (como o 4K); – Melhorias significativas em renderização gráfica e áudio; – Material design; – ART nativo; Presente e futuro do Android
  • 55. • Material design – Padronização de comportamento visual entre dispositivos; – Novas APIs para temas, widgets e views; – Adição do conceito de ‘’eixo Z’’ em views (elevação 3D); Presente e futuro do Android
  • 56. • ART – Implementa a abordagem ‘’Ahead of Time’’ (AoT); • Realiza pré-compilação do bytecode (via dex2oat) em linguagem de máquina (binário) no ato da instalação do app no sistema; • Ganhos de performance em garbage collection; • Transforma o código em uma dependência do sistema; • Menor uso de CPU, logo, uma redução do consumo de bateria; Presente e futuro do Android
  • 57. • Novas frentes Presente e futuro do Android
  • 58. • Futuro – Números de crescimento • Cerca de 75% dos smartphones mundiais rodam o Android; • Mais de 1 milhão de novas ativações ocorrendo diariamente; • 1 bilhão de usuários ativos mensalmente nos serviços do Google; Presente e futuro do Android
  • 59. • Previsão de vendas de smartphones (IDC) Presente e futuro do Android
  • 61. • PS Gamers – App Android de consulta a dados da Playstation Network; – Possibilita ao usuário visualizar diversas informações, como: • Perfil; • Level, progresso e escada de troféus; • Lista de games; • Troféus conquistados por game; • Detalhes de troféu; • Amigos online; • Consulta de games e troféus de cada amigo; Projeto Prático
  • 62. • Login e Home Projeto Prático
  • 63. • Trophy ladder e Game list Projeto Prático
  • 64. • Game trophies e Trophy details Projeto Prático
  • 65. • Online friends e Offline friends Projeto Prático
  • 66. • Friend profile e Friend game list Projeto Prático
  • 68. • Referências utilizadas  http://developer.android.com/reference/  http://oglobo.globo.com/tecnologia/eric-schmidt-preve-um- futuro-com-android-para-todos-4097588  http://www.idc.com/prodserv/smartphone-os-market- share.jsp  http://www.linuxforu.com/2011/06/virtual-machines-for- abstraction-dalvik-vm/  http://developer.android.com/about/versions/lollipop.html;  http://www.google.com/design/spec/material- design/introduction.html Referências
  • 69. • Referências utilizadas (cont.)  http://android.stackexchange.com/questions/7802/why- does-dalvik-virtual-machine-need-to-run-in-every-process  http://developer.android.com/distribute/tools/launch- checklist.html  http://www.electronicsweekly.com/eyes-on-android/what- is/what-is-the-dalvik-virtual-machine-2011-10/  https://software.intel.com/en-us/blogs/2014/06/18/art-vs- dalvik-introducing-the-new-android-x86-runtime  http://pocketnow.com/2014/05/06/q1-2014-shipment- numbers Referências