3 de set de 2013

Procurando entender melhor o Android...

Hoje em dia é difícil encontrar alguém que não usa um Smartphone não é mesmo!?
E grande parte deste Smartphones é constituída por aparelhos "Android" mais será por que??? 

Então nesta série vou tentar explicar um pouco sobre o sistema e posteriormente focarei em desenvolvimento para o mesmo... 

E então vamos lá!?


O que é o Android?

O Android é um sistema operacional para dispositivos móveis, open source baseado em linux que foi desenvolvido pela empresa Android Inc., empresa esta que posteriormente foi adquirida pela Google.

Histórico:

A aquisição da empresa Android Inc. pela gigante Google ocorreu em 2005 logo após à grande popularização dos Smartphones realizada pelo Apple com seu Iphone, fato que fez a gigante perceber a possibilidade de expandir seu mercado de anúncios para este segmento.
Em 2007 foi criada a Open Handset Alliance, um grupo de empresas do mercado de Smartphones, para cuidar do projeto Android.

Características:

Criado em java o Android foi concebido com o intuito de tirar maior proveito do potencial dos aparelhos móveis.
Pode-se dizer que ele é uma maquina virtual Java rodando sobre o Kernel do Linux, que da suporte para o desenvolvimento de aplicações Java através de um conjunto de bibliotecas e serviços.
Além disso ele utiliza uma implementação da JVM chamada Dalvik a qual não consome bytecode Java, mais sim dexode e por esse motivo a Google desenvolveu uma ferramenta que converte bytecodes (*.class) em dexcodes (*.dex) chamada "dx".

Arquitetura:

A arquitetura do Android é dividida basicamente em 4 camadas:

Aplicações
Framework de aplicações
Bibliotecas e Android Runtime
Linux Kernel




Aplicações:


A camada de aplicações é onde se encontra os aplicativos que são utilizados, como por exemplo:
Contatos, telefone, browser...

Framework de aplicações:


É esta a camada que oferece ao desenvolvedor o acesso às diversas funcionalidades do aparelhos, desenvolvida em Java fornece uma plataforma aberta que favorece o desenvolvimento de aplicações ricas e inovadoras.
Exemplos:
Activity Manager: Framework responsável pelo controle das activities (telas).
Telephone Manager: Framework responsável pela parte de ligações do sistema.

Bibliotecas e Android Runtime:


Nesta camada se encontram as bibliotecas básicas do sistema e os serviços providos para as camadas superiores incluindo a VM(Dalvik).
A maior parte dessas bibliotecas são escritas em C e C++.
Exemplo:
SQlite: Biblioteca que dá acesso ao Banco de dados nativo no Android que é o SQlite.


Linux Kernel:


O Android usa o kernel do Linux modificado de forma a garantir um melhor proveito dos recursos dos aparelhos.
Exemplos:
Camera Driver: Driver responsável por dar acesso à câmera ao sistema operacional.
WiFi Driver: Driver responsável por permitir ao sistema operacional estabelecer uma conexão via dispositivo de WiFi do aparelho.

Algumas modificações do Kernel:

Binder:
Em sistemas operacionais que utilizam memória virtual os processos rodam em diferentes regiões de memória, desta forma um processo não tem acesso à região de memória de outro e por isso precisamos de um mecanismo de comunicação entre processos, no caso do Android toda comunicação entre  processos passa pelo binder que está abstraído pelas bibliotecas do sistema, sendo assim transparente ao desenvolvedor.

Ashmem:
Para permitir a criação de dispositivos com pouca memória foi desenvolvido o ashmem que é um dispositivo de compartilhamento de memória onde dois processos podem se comunicar através de uma região compartilhada de memória é leve, simples de usar e tem a capacidade de descartar regiões de memória compartilhada de maneira segura em caso de pouca memória disponível.

Logger:
Foi implementado um sistema de logs globais no Android, este cria 4 arquivos de dispositivo em “/dev/log”, cada um representa um buffer diferente:







Para acessar o sistema de log basta abrir, ler ou escrever em um destes arquivos.

Wakelocks:
Para economizar a tão escassa bateria dos dispositivos moveis, após ficar algum tempo sem uso o aparelho entra em modo de economia, porém em alguns casos, como por exemplo um processo que roda em background mais não pode ser interrompido, o desenvolvedor pode utilizar o wakelock para desabilitar este mecanismo.

oom han­dling:
Como já sabemos nem todos dispositivos que carregam o Android como sistema operacional dispõe de grande memoria, por esse motivo foi implementado o oom han­dling que controla o uso de memória e mata processos em caso de pouca memoria disponível. 


Desenvolvimento:

Para o desenvolvimento de aplicativos para o Android a Google disponibiliza para download um pacote completo que contem quase tudo que o desenvolvedor vai precisar:
IDE (Eclipse já configurado)Android SDK ToolsAndroid Platform-toolsThe latest Android platformThe latest Android system image for the emulator

http://developer.android.com/sdk/index.html

No dia 15/05/2013 a Google lançou sua própria IDE baseada no Eclipse o “Android Studio”, que também já contem quase tudo necessário para o desenvolvimentos de aplicativos.

http://developer.android.com/sdk/installing/studio.html

Em ambos casos o único pré-requisito é q o desenvolvedor tenha o JDK do Java instalado na maquina.
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnpt

A Google disponibiliza um pequeno, porém bastante completo, tutorial sobre o desenvolvimento para a plataforma Android este está localizado no seguinte endereço:
http://developer.android.com/training/index.html

Alguns Itens básicos para o desenvolvimento:
IntentActivityServiceContent ProviderBroadcast Receiver

Intent:
Intent é um objeto responsável por passar informações para os principais componentes da API (Activities, Services e BroadCast Receivers).
Para que um destes componentes seja instanciado é necessário que seja criado um Intent, mesmo que não se queira passar nenhuma informação para o componente.

Activity:
Uma Activity é uma tela que é apresentada ao usuário, sendo que Atividades podem interagir entre si, por exemplo a Caixa de entrada de uma aplicação de email.
Para criar uma nova entidade basta criar uma classe (Java) e estender esta à classe Activity.

Service:
Um Service é uma aplicação que roda em background sem atrapalhar a execução de outras aplicações, como por exemplo um player de musicas que toca as musicas mas permite a realização de outras tarefas ao mesmo tempo.
Para se criar um Service basta estender uma classe (Java) à classe Service

Content Provider:
Um Content Provider é o responsável por gerenciar os dados da aplicação, por padrão o banco utilizado é o SQLite porém pode usar qualquer meio a qual a aplicação tenha acesso.
Atravez do Content Provider outras aplicações podem acessar e/ou modificar dados da sua aplicação (se tiverem a devida permição)

Broadcast Receiver:
Um Broadcast Receiver é um componente que responde a qualquer Broadcast gerado pelo sistema.
Um exemplo é o Broadcast que informa que a bateria está no fim.
Apesar de um Broadcast Receiver não apresentar uma interface, eles podem gerar uma notificação de status.



Fique de olho em: http://developer.android.com/index.html pois são constantes as atualizações realizadas...


E não perca aqui muito em breve a continuação desta série que a partir de agora terá foco em programação de aplicativos para Android...

Então por enquanto é isso! Muito obrigado pelo acesso e qualquer dúvida, crítica construtiva ou comentário pode deixar ai embaixo que responderei com maior prazer...


Nenhum comentário:

Postar um comentário