terça-feira, 3 de março de 2015

Visão Geral Android - #profMBA

Visão Geral Android
  1. ANDROID
O Android é uma plataforma de código aberta para dispositivos móveis fundada por Andy Rubinera, Nick Sears e Chris White, em outubro de 2003 na cidade de Palo Alto, Califórnia pela empresa Android Inc. Inicialmente, a empresa desenvolvia tecnologia totalmente independente de outras empresas e mantinha os seus projetos em absoluto segredo. Dentre os seus principais objetivos, estava o desenvolvimento de um sistema operacional avançado para câmeras digitais. Algum tempo depois, percebeu-se que o mercado para tais dispositivos não era grande suficiente, então a equipe desviou os seus esforços para produzir um sistema operacional para smartphones, rivalizando assim com outros sistemas da categoria, como por exemplo, o Symbian, desenvolvido pela Nokia e Windows Mobile, da Windows. Dois anos mais tarde, em 17 de agosto de 2005, a Google comprou a companhia e colocou todo seu time de desenvolvedores, liderados por Andy Rubinera, que passou a integrar o corpo de membros da empresa, para trabalhar em uma plataforma móvel baseada em Linux.
Em 2007, o sistema foi oficialmente lançado no mercado, com foco em desenvolvimento mobile e construído sobre o Kernel do Linux versão 2.6. O sistema está ligado a Open Handset Alliance (OHA), que é um grupo formado por gigantes do mercado de telefonia de celulares liderados pela empresa Google. O objetivo principal dessa aliança é obter uma plataforma moderna e flexível para o desenvolvimento de aplicações corporativas. Dentre suas características, o Android tem uma interface rica, conectividade (Bluetooth, Wifi, GSM entre ooutros) mensagens (SMS, MMS), câmera (foto, vídeo), é multitarefa, acelerômetro, sensíveis ao toque e muitas outras funcionalidades além de utilizar a consagrada linguagem Java, usufruindo de todos os recursos.
  1. BREVE HISTÓRICO
O primeiro aparelho com o sistema Android, o HTC Dream, foi lançado em 22 de outubro de 2008 nos Estados Unidos.  Os codinomes utilizados pela empresa são baseados em sobremesas. Em abril de 2009, a versão 1.5 – ou “Cupcake” – introduziu a correção automática nos textos e também os famosos“widgets”, que até hoje são uma das melhores funções do sistema.  Em seguida, a versão 1.6 “Donut” trouxe a busca online automática a partir da página inicial do aparelho. Ainda em 2009, a versão 2.0 “Eclair” permitia o uso de múltiplas contas do Google em um mesmo aparelho, o que facilitou o sincronismo de e-mails e contatos.
Em 2010, com a versão 2.2 “Froyo”, a grande novidade foi a possibilidade de transformar o dispositivo em um ponto de acesso via wi-fi usando a rede 3G. Além disso, um grande passo nessa fase foi a introdução do Flash (plug-in de navegador entre plataformas que oferece recursos avançados na Web) no navegador, o que bateu de frente com seu principal concorrente, o iPhone.
No final de 2010, a versão 2.3 "Gingerbread" trouxe pela primeira vez o suporte a voz sobre IP, a tecnologia VOIP, que permite o uso de aplicativos para chamadas de voz como o Skype, por exemplo. Já em 2011, com o Android 3.0 Honeycomb , tornou-se possível utilizar o sistema em telas maiores, com gráficos melhores e um sistema de barra de avisos totalmente reformulado.
Em 16 de dezembro de 2011, o Android 4.0 “Ice Cream Sandwich” reformulou toda a interface da plataforma mais usada no mundo. A principal novidade foi a criação de pastas na tela principal do aparelho. Além disso, a partir dessa versão passou a ser possível escolher quais aplicativos devem iniciar o funcionamento assim que o smartphone for ligado.
Em julho de 2012, a versão 4.1 “Jelly Bean” incluiu novos elementos internos e uma nova pesquisa. E a atualização 4.2 ficou por conta da segurança. Esse é um ponto vulnerável do Android. Ao longo desses anos, diversas falhas e vulnerabilidades já foram encontradas na plataforma, e ela é hoje alvo para inúmeros vírus e malwares. A última atualização, 4.3, trouxe a função de múltiplos usuários com restrições de uso diferentes para cada. A versão 5.0 - “Lollipop” – foi definitivamente apresentada no dia 15 de outubro de 2014. Segundo o site www.androidpit.com.br , “a versão integrará o Google em profundidade. O ótimo Material Design promete garantir, ainda mais do que o Holo, a coerência entre os serviços do gigante da internet.”
  1. DESENVOLVIMENTO DE APLICATIVOS MOBILE
Nos últimos anos a necessidade de otimização de tempo vem acarretando cada vez mais em obter recursos que disponibilizem isso na palma da mão. Isso é encontrado na junção mundo da web e telefonia móvel. Segundo Lecheta (2012, p.16) “a disputa no mercado de mobilidade está extremamente acirrada, com diversas inovações e lançamentos acontecendo em todos os lugares, e mesmo os especialistas sentem dificuldade em acompanhar tamanha evolução”.
Gráfico da UIT mostra crescimento de linhas celulares em países em desenvolvimento (verde) e desenvolvidos (laranja) em relação à população mundial (vermelho).
        
  1. ARQUITETURA
A figura a seguir mostra os principais componentes de um sistema operacional Android. A seguir serão detalhados esses componentes:
  • Kernel do Linux: A arquitetura do Android é baseada no Kernel do GNU/Linux, verão 2.6. O Kernel do sistema funciona como uma camada de abstração entre o hardware e o restante da pilha de softwares da plataforma. O kernel GNU/Linux já possui vários recursos necessários para a execução de aplicações, como gerenciamento de memória, gerenciamento de processos, pilha de protocolos de rede, módulo de segurança e vários módulos do núcleo de infra-estrutura. Como o sistema operacional é conhecido, também facilita o surgimento de melhorias aos drivers já existentes.        
  • Bibliotecas: O Android inclui um novo conjunto de bibliotecas C/C++ usados pelos vários componentes do sistema. As funcionalidades são expostas através do framework do Android (ver seção 2.3.4). Algumas das bibliotecas do núcleo da arquitetura são listadas abaixo:
Surface Manager: Controla e gerencia o acesso ao subsistema de display. Compõe transparentemente camadas gráficas 2D e 3D de múltiplas aplicações.
3D libraries: Uma implementação baseada na especificação do OpenGL 1.0.
SGL: Biblioteca usa para compor gráficos 2D.
Media libraries: Essas bibliotecas suportam playback e gravação de muitos formatos de áudio e de vídeo, bem como imagens estáticas, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG e PNG.
FreeType: É uma biblioteca usada para renderizar fontes.
SSL: Fornece encriptação de dados enviados pela Internet.
SQLite: É uma biblioteca C que implementa um banco de dados SQL embutido. Programas que usam a biblioteca SQLite podem ter acesso a banco de dados SQL sem executar um processo RDBMS em separado. A biblioteca SQLite lê e escreve diretamente para e do arquivo do banco de dados no disco.
LibWebCore: Biblioteca base para o navegador do Android e visões da web.
System C Library: Uma implementação do libc derivada do BSD.
  • Android Runtime: Toda aplicação Android executa seu próprio processo, com sua própria instância da máquina virtual Dalvik. Dalvik foi escrito de forma que um dispositivo possa executar múltiplas máquinas virtuais concorrentemente de maneira eficiente. Dalvik executa classes compiladas por um compilador da linguagem Java. Os arquivos class gerados são transformados no formato .dex pela ferramenta dx, incluída no SDK (Software Development Kit) do Android. Esses arquivos .dex são executados pela Dalvik. A máquina virtual Dalvik também usa o kernel do GNU/Linux para prover a funcionalidade de múltiplas threads e gerenciamento de memória de baixo nível. O componente em azul da Figura 2 contém um conjunto de bibliotecas que fornece a maioria das funcionalidades disponíveis no núcleo das bibliotecas da linguagem Java. Isso inclui classes para manipulação de arquivos, entrada e saída, entre outros.
Uma das primeiras diferenças de Dalvik para a máquina virtual Java (JVM) é que Dalvik é baseado em registradores e a JVM é baseada em pilhas. A escolha da abordagem baseada em registradores traz um benefício em ambientes restritos, como telefones celulares, e uma análise mais aprofundada concluiu que máquinas virtuais baseadas em registradores executam mais rapidamente os programas do que máquinas baseadas em pilhas.
  • Framework de Aplicação: Os desenvolvedores têm acesso completo à mesma API que é usada pelas aplicações core da plataforma. A arquitetura da aplicação foi projetada para simplificar o reuso dos componentes. Qualquer componente pode publicar suas capacidades e quaisquer outros componentes podem então fazer uso dessas capacidades, sujeito às restrições de segurança reforçadas pelo framework. Esse mesmo mecanismo permite que os componentes sejam substituídos por outros em tempo de desenvolvimento. O fundamento de todas as aplicações do framework é um conjunto de serviços e sistemas, que inclui:
Activity Manager - (Gerenciador de atividade): Gerencia o ciclo de vida das
aplicações.
Package Manager - (Gerenciador de pacotes): Mantém quais aplicações estão instaladas no dispositivo.
Window Manager - (Gerenciador de janelas): Gerencia as janelas das aplicações.
Telephony Manager - (Gerenciador de telefonia): Componentes para acesso aos recursos de telefonia.
Content Providers - (Provedores de conteúdo): Permitem que as aplicações acessem os dados de outras aplicações (como contatos) ou compartilhem os seus próprios dados.
Resource Manager - (Gerenciador de recursos): Fornece acesso a recursos gráficos e arquivos de layout.
View System - (Visão do sistema): Um conjunto rico e extensível de componentes de interface de usuário. As visões podem ser usadas para construir uma aplicação, elas incluem listas, grids, caixas de texto, botões, dentre outras.
Location Manager - (Gerenciador de localização): Gerencia a localização do dispositivo.
Notification Manager - (Gerenciador de notificações): Permite que todas as aplicações exibam alertas na barra de status.
XMPP Service (Serviço XMPP) - Suporte para uso do protocolo XMPP (Extensible Messaging and Presence Protocol).
  • Apicações: O Android fornece um conjunto de aplicações básicas, que inclui um cliente de e-mail, um programa SMS, um calendário, mapas, navegador, contatos, entre outras.
Há quatro blocos principais de construção de uma aplicação:
- Activity (Atividade)
- Intent Receiver (Receptor de Intenção)
- Service (Serviço)
- Content Provider (Provedor de Conteúdo)
  1. ARMAZENAMENTO DE DADOS
Na plataforma Android, o armazenamento de dados se dá através do método Shared Preferences, no qual fazemos o uso para armazenamento de informações. Com ele armazenamos entradas do tipo chave-valor, associando um nome a uma determinada informação para que posteriormente faça a recuperação dela. Tudo é armazenado pelo Android em um arquivo XML especificamente dentro da estrutura interna de disco de cada aplicação. Mas essa leitura e interpretação não é tarefa do programador, a aplicação disponibiliza funções que abstraem essas ações. A tarefa é salvar esses dados e depois buscá-los para recuperar as informações. Contudo, esse procedimento é disponível para poucas informações, simples podendo ser números, Strings e valores booleanos.
Outra forma é utilizando o Storange, que por definição é um espaço em disco em que cada aplicação possui para o salvamento de arquivos. Há ainda o Internal Storange, estrutura interna do aplicativo, onde ficam os arquivos do Shared Preferences, e o External Preferences         que na maioria das vezes é o SDCard. Os arquivos manipulados dessa forma proporcionam uma certa “liberdade” de onde os arquivos podem ser salvos. Um fato negativo é que sua manipulação se torna mais trabalhosa.
A utilização dessas classes para manipulação de dados tanto escrita quanto leitura satisfazem a maior parte das aplicações. Mas é disponibilizado pela plataforma uma forma mais sofisticada para a persistência de dados, o SQLite. Esse banco é auto-contido na plataforma sem necessidade de instalação e configuração. Sua criação é feita através da classe DatabaseHelper que deve estender a classe SQLiteOpenHelper. Sua interação com a biblioteca nativa Android torna a manipulação de dados simples.

Escrito pela aluna Marcelle Maia.


Nenhum comentário:

Postar um comentário

Erro Assinador Serpro - ERR_SSL_VERSION_OR_CIPHER_MISMATCH - Windows

Se você já tentou de tudo e sempre aparece o erro de ERR_SSL_VERSION_OR_CIPHER_MISMATCH, siga os passos abaixo e resolva seu problema: Obs...