C3SL - Centro de Computação Científica e Software Livre. Estudo sobre Android



Documentos relacionados
Sistemas Embarcados Android

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

O que é o Android? O que é o Android

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura

Sistemas Embarcados Android

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008

Introdução a programação de dispositivos móveis. Prof. Me. Hélio Esperidião

A plataforma Android: Uma Introdução

Introdução a Computação Móvel

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Programação para Dispositivos Móveis

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Sistemas Operacionais

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Aula 1 - Introdução e configuração de ambiente de desenvolvimento

Entenda as vantagens dos chips de quatro núcleos

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Seminário de S.O - Google Android

Sistemas Operacionais Introdução

Android. Marcelo

4 Estrutura do Sistema Operacional Kernel

Computação II Orientação a Objetos

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Mapas e Localização. Programação de Dispositivos Móveis. Mauro Lopes Carvalho Silva

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

COMPUTAÇÃO MÓVEL. Prof. M.Sc Sílvio Bacalá Jr

Desenvolvimento de um aplicativo básico usando o Google Android

Sistemas Operacionais

Frameworks para criação de Web Apps para o Ensino Mobile

UM FRAMEWORK PARA DESENVOLVIMENTO DE

Desenvolvimento para Android Prá9ca 1. Prof. Markus Endler

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Programação de Computadores - I. Profª Beatriz Profº Israel

Um Driver NDIS Para Interceptação de Datagramas IP

O SISTEMA ANDROID NO UNIVERSO DOS DISPOSITIVOS MÓVEIS

EXPLORANDO TÉCNICAS E RECURSOS DO GERENCIADOR DE DADOS ABERTOS CKAN. TuaneFaria USP tuanefaria@yahoo.com.br

ESTUDO DE CASO WINDOWS VISTA

Sobre o Colméia: Grupo de pesquisa em Software e Hardware Livre. Software Livre não é só Linux!

Descrição geral do Android

Aplicações Móveis e sua aplicação na saúde: micd, exemplo prático

Desenvolvimento de Aplicações Móveis: Presente, Passado e Futuro

APLICATIVO MOBILE CATÁLOGO DE PÁSSAROS - PLATAFORMA ANDROID/MYSQL/WEBSERVICE

Curso de Linux Básico

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Conceitos sobre Sistemas Operacionais. Técnico de Informática 2º. Módulo Profa. Madalena Pereira da Silva

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

OBJETIVO Criação e execução de um projeto Android dentro da IDE IntelliJ.

Programação Palm OS. Roteiro da Apresentação. Motivação

Itinerários de Ônibus Relatório Final

COMPARATIVO ENTRE IOS, ANDROID E WINDOWS PHONE

FECAP. Plataforma Microsoft

Desenvolvimento Web TCC Turma A-1

IW10. Rev.: 02. Especificações Técnicas

Informática. Aula 03 Sistema Operacional Linux. Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

IV SEMANA DE INFORMÁTICA. Prof. Rafael Hens Ribas

Sistemas Operacionais

FundamentosemInformática

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Feature-Driven Development

A LIBERDADE DO LINUX COM A QUALIDADE ITAUTEC

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

1

OneDrive: saiba como usar a nuvem da Microsoft

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

Figura 01 Kernel de um Sistema Operacional

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

EA998/MC933 Guido Araujo e Sandro Rigo

Tecnologia e Informática

Google Android para Tablets

Thunder Pro II Gold Edition Manual de operações v 8.7 Rev:b

Everson Scherrer Borges João Paulo de Brito Gonçalves

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Windows Phone: Acesse Configurações > Rede celular + SIM > Ativada/Desativada. Android: Deslize a tela para baixo e desmarque a opção de dados.

Toolkit para Linux Embarcado. Autor: Thiago Waltrik Orientador: Miguel Alexandre Wisintainer

Plasma Active. Thiago Macieira

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE)

NOME: MATHEUS RECUERO T2 ANTIVIRUS PANDA

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

Windows 8 no Surface, Data Dashboard e a evolução do mercado de tecnologia móvel

5 Mecanismo de seleção de componentes

Fundamentos da Computação Móvel

DIGIMAN. WTB Tecnologia

Inicialização Rápida do Novell Vibe Mobile

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Programação de Computadores II TCC Turma A-1

Sistema Operacional Correção - Exercício de Revisão

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

SISTEMAS OPERACIONAIS

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

ArcSoft MediaConverter

10 DICAS PARA TURBINAR SEU PACOTE DE DADOS. 1 - Desative os Dados do Celular. 2 Remova as notificações e atualizações automáticas

Transcrição:

C3SL - Centro de Computação Científica e Software Livre Estudo sobre Android Relatório que apraaesenta o estudo realizado pelo C3SL analisando os aspectos gerais do Android e de outros sistemas similares Fevereiro 2013 1

Sumário 1 Introdução 3 2 Android 4 2.1 Arquitetura................................. 5 2.2 Kernel.................................... 6 2.3 Bibliotecas & Runtime........................... 6 2.3.1 Máquina Virtual Dalvik...................... 6 2.3.2 Extensão.Dex............................ 7 2.3.3 Pacote APK............................. 8 2.4 Framework.................................. 8 2.5 Aplicações.................................. 9 2.5.1 Componentes da Aplicação..................... 9 2.6 O Sistema de Arquivos........................... 11 3 Alternativas 11 3.1 Tizen..................................... 12 3.2 Firefox OS.................................. 13 3.3 Mer..................................... 14 3.4 Ubuntu Touch OS.............................. 15 3.4.1 Informações............................. 15 3.4.2 Lançamento............................. 16 2

1 Introdução Este relatório apresenta os aspectos gerais do sistema operacional Android, além de analisar outros sistemas semelhantes. Em relação ao Android, são analisados diversos pontos importantes deste sistema, tais como quais camadas o compõem, e para que servem, o funcionamento das aplicações e o sistema de arquivos. Dentre as alternativas ao Android, foram analisados o Tizen, o Fifefox OS, o Mer e o Ubuntu Touch OS. 3

2 Android Android é um sistema operacional baseado no núcleo do Linux para dispositivos móveis, desenvolvido pela Open Handset Alliance, liderada pela Google e várias outras empresas, tais como: Intel, Nvidia, Samsung, LG, entre outras. O projeto se iniciou em outubro de 2003, em Palo Alto na California, com uma empresa chamada Android Inc. Os fundadores foram Andy Rubin, Rich Miner, Nick Sears e Chris White. Esta empresa foi adquirida pela Google em 2005, e a primeira versão do Android foi disponibilizada para o público em 22 de outubro de 2008. Desde o seu lançamento, o Android passou por várias modificações, e com isso várias versões foram lançadas. Abaixo está a lista com todas as versões existentes: 1.5: Cupcake 1.6: Donut 2.0-2.1: Eclair 2.2: FroYo 2.3: Gingerbread 3.0-3.2: Honeycomb 4.0: Ice Cream Sandwich 4.1-4.2: Jelly Bean 4

2.1 Arquitetura O android é um sistema operacional formado por cinco camadas: o kernel, as bibliotecas, o runtime, o framework e as aplicações. Para um melhor aproveitamento da capacidade que o sistema tem a oferecer, é vital o entendimento do que são, de como funcionam e de como interagem estas camadas. Figura 1: Arquitetura Figura 2: Diagrama demonstrando a arquitetura interna do Android 5

2.2 Kernel O Android utiliza uma versão modificada do kernel do Linux, em que foram adicionados vários serviços considerados essenciais para dispositivos móveis, tais como: gerenciamento de energia, um novo mecanismo para a comunicação entre processos (IPC - Inter process Communication) chamado Binder, depuração de erros (Android Debug Bridge), Alarm (Driver que tem a função de fornecer algumas funções básicas de alarme e temporizadores), etc. 2.3 Bibliotecas & Runtime Bibliotecas Depois da camada do Kernel temos as bibliotecas básicas do sistema, sendo que a maior parte foi desenvolvida em C/C++. Dentras as bibliotecas temos, por exemplo, a Bionic que é a libc otimizada para uso embarcado. Temos também a OpenGL/ES para se trabalhar com gráficos, e a SQLite, para a manipulação de banco de dados, entre outras. Runtime O Runtime é composto pela máquina virtual Dalvik, que serve para a execução de aplicações, e pelas Bibliotecas do Núcleo (Core Libraries), que são um conjunto de bibliotecas que foram reescritas para prover as mesmas funcionalidades disponíveis na linguagem Java. A função do Runtime é de permitir rodar programas complexos em ambientes com memória limitada, bateria limitada, processamento limitado, entre outros. 2.3.1 Máquina Virtual Dalvik A Dalvik virtual machine foi desenvolvida pela Google como parte da plataforma Android. Ela é uma máquina virtual baseada em registradores. Ela é otimizada para requerer pouca memória e rodar em um CPU lento. 6

Foi projetada para permitir que múltiplas instâncias da máquina virtual rodem ao mesmo tempo. O sistema operacional é responsável pelo o isolamento de processos, pelo gerenciamento de memória e o suporte a threading. Ela executa arquivos no formato.dex(dalvik Executable). Por que não usar J2ME? J2ME é a plataforma Java para sistemas embarcados, a qual está sob a especificação JSR (Java Specification Request) que é um processo bastante burocrático e necessário para que sejam inseridos novos recursos na plataforma. Usando a Dalvik, a Google tem total liberdade para evoluir o Android e adicionar novas funcionalidades de uma forma mais rápida e simples. 2.3.2 Extensão.Dex Quando se trabalha com J2EE, ou seja, quando é compilada uma Classe.java, a JVM (Java Virtual Machine) interpreta o código.java e gera o código.class. Isto siginifica que cada classe Java resulta em um arquivo. Na plataforma Android os arquivos.java também são convertidos para.class e através de uma ferramenta chamada dx, todos os arquivos.class relacionados à uma aplicação são convertidos para um único arquivo, com a extensão.dex, que é interpretada pela DVM (Dalvik Virtual Machine). Considerando que um arquivo.class contém apenas uma classe, o arquivo.dex contém várias classes, de modo a reduzir o tamanho do arquivo e operações de I/O (entrada e saída) e acelerar a velocidade de busca. Outra vantagem do arquivo.dex é que ele foi otimizado para o uso de memória e o designer principal é impulsionado para o compartilhamento de dados. O diagrama abaixo compara o formato de arquivo.class interpretado pela JVM e o.dex interpretado pela DVM (Dalvik Virtual Machine). 7

2.3.3 Pacote APK O Android Package Tool (APT) compacta os arquivos.dex e o AndroidManifest.xml 1 como binário e cria uma extensão.apk. Após a geração do arquivo.apk, que já pode ser disponibilizado para os dispositivos com Android, os arquivos.dex são otimizados antes da execução. Os arquivos são salvos em uma região de cache onde são convertidos para um tipo de extensão customizada chamada de.dey. Uma vez compilado, se a estrutura de pacotes da aplicação não mudar, a DVM (Dalvik Virtual Machine) executa diretamente o arquivo.dey. 2.4 Framework Esta Camada tem o objetivo de fornecer todas as funcionalidades necessárias para a construção de aplicativos, visando o reaproveitamento de código e o aumento da produtividade. Sendo que todas as aplicações desenvolvidas para Android têm acesso ao mesmo framework e as mesmas API s. Abaixo alguns dos frameworks mais importantes: Activity Manager: Responsável por gerenciar o ciclo de vida das aplicações. Além de todas as tarefas relativas a troca de contexto e gerenciamento de processos. Package Manager: Gerencia a instalação e atualização da aplicações. Telephony Manager: Fornece acesso a informações sobre os serviços de telefonia no dispositivo. Content Provider: Provê o compartilhamento de dados entre aplicações. 1 O AndroidManifest.xml apresenta informações essenciais sobre o aplicativo para o sistema Android, informações que o sistema deve ter antes de executar qualquer código do aplicativo. 8

2.5 Aplicações As aplicações são escritas utlizando-se a liguagem de programação Java. Encontramse nesta camada, aplicações tais como: navegador, e-mail, calendário, etc. 2.5.1 Componentes da Aplicação Componentes da Aplicação são blocos essenciais de uma aplicação do Android, alguns destes componentes dependem um do outro, mas cada tipo tem seu próprio objetivo e ciclo de vida. O sistema lida com cada componente de maneira diferente e cada um deles possui sua própria entidade e sua própria maneira de ser construida. As aplicações podem ser compostas de quatro tipos de componentes: Brodcast Receiver: que responde a algum evento do sistema ou de uma aplicação, por exemplo, tela desligada, bateria está baixa, o download de um arquivo acabou. Tipicamente, um brodcast receiver não deve realizar muito trabalho, ele deve iniciar um service ou uma activity. Content Providers: que são responsáveis por gerenciar o acesso a um conjunto estruturado de dados. O content provider é um modo de compartilhar dados entre aplicações e a interface para o acesso a estes dados é feita em SQL. Activity: que fornece uma tela com a qual os usuários podem interagir, a fim de fazer algo, como discar o telefone, tirar uma foto, enviar um e-mail ou visualizar um mapa. 9

Service: que pode executar operações de longa duração em segundo plano e não fornece uma interface para o usuário. 10

2.6 O Sistema de Arquivos Podemos ver como é a estrutura da árvore de diretórios do Android abaixo: Os principais diretórios são o data que é responsável por armazenar dados das aplicações, e o system que contêm as bibliotecas, os serviços e as aplicações Java. 3 Alternativas A seguir serão apresentados alguns sistemas operacionais que têm a mesma plataforma alvo do Android. 11

3.1 Tizen Tizen é um sistema open source, baseado no Linux, desenvolvido a partir de um consórcio, conhecido como Tizen Association 1, que inclui empresas como a Samsung, a Intel e a Linux Foundation. Este sistema está sendo projetado para rodar em smartphones, tablets, netbooks, smart TVs, centrais multimídia para veículos, e outros tipos de sistemas embarcados. Por enquanto o único meio para se conhecer este sistema, é através da utilização do SDK (Software Development Kit), disponibilizado no site oficial. Empresa/Desenvolvedor Linux Foundation, Samsung, Tizen Association Família do Sistema Operacional Linux Modelo de Código Open souce e proprietário Lançamento 5 de Janeiro de 2012 Linguagem de Programação HTML5, C++,C e Java(Android) Plataformas Suportadas ARM e x86 Licença Apache License, BSD, LGPL, Flora License e proprietária. Site Oficial https://www.tizen.org/ 1 https://www.tizenassociation.org/ 12

3.2 Firefox OS O Firefox OS (anteriormente Boot to Gecko) é um sistema de código-aberto que foi totalmente desenvolvido baseado em HTML5. Tendo como objetivo oferecer todos os benefícios de um smartphone com um valor mais acessível. Ainda não foram disponibilizados modelos para o público, mas existe a opção de se utilizar o Firefox OS Simulator 1 para testar o sistema. Empresa/Desenvolvedor Mozilla Corporation Família do Sistema Operacional Linux Modelo de Código Open souce 2 Lançamento 5 de Janeiro de 2012 Linguagem de Programação HTML5, CSS, JavaScript, C++ Plataformas Suportadas ARM Site Oficial http://www.mozilla.org/firefoxos/ 1 https://addons.mozilla.org/pt-br/firefox/addon/firefox-os-simulator/ 2 Mozilla Licensing Policies 13

3.3 Mer Em outubro de 2011 o projeto Mer foi anunciado, focado em ser um Linux para plataformas móveis de código aberto, ultra-portátil, incluindo as bases tecnológicas do HTML5, QML(Qt Meta Language) e JS(JavaScript), para a construção de produtos que seriam derivados do código base do MeeGo (um linux para portáteis descontinuado em 2011, o Mer é seu sucessor). Em meados de 2011, David Greaves e Carsen Munk discutiram novas direções para o projeto MeeGo, a idéia apresentada foi de reconstruir o projeto de cima para baixo, de modo a reacender o projeto e corrigir problemas com o gerenciamento, falta de transparência, direção e flexibilidade. Essas discussões foram feitas numa série de postagens em um blog 1, onde uma diferente abordagem para um código de plataformas móveis foi apresentado e a partir deste código, o projeto foi iniciado. Empresa/Desenvolvedor Família do Sistema Operacional Modelo de Código Linguagem de Programação Plataformas Suportadas Site Oficial The Mer Project Linux Open souce HTML5, Qt e EFL ARM, x86 e MIPS http://merproject.org/ 1 http://mer-l-in.blogspot.com.br/2011/08/restructure-meego-by-installments.html 14

3.4 Ubuntu Touch OS É um projeto que tem por objetivo desenvolver um sistema operacional para dispositivos móveis (no caso, tablets e smartphones), com o uso da interface Unity do Ubuntu OS. O projeto está sendo desenvolvido pela canonical, foi anunciado em 2 de janeiro de 2013, mas na época ainda não tendo um nome específico, apenas Ubuntu for phones, em 19 de fevereiro de 2013 foi dado o nome de Ubuntu Touch OS. O Ubuntu Touch OS possui características muito semelhantes ao Ubuntu para desktops, algumas de suas características são: Open Source Multilingual As plataformas suportadas incluem ARM e i386 Usa o Kernel do Linux (Usado pelo Android OS) Inclui a GNU GLP dentre outras licenças de código aberto Da mesma forma que o projeto Mer, o Ubuntu Touch OS é baseado em QML e HTML5, podendo suportar facilmente aplicações desenvolvidas com tecnologia web. 3.4.1 Informações Dispositivos que têm a opção de ser acoplados em uma docking station 1, obtendo assim recursos extras, podem se transformar num computador completo, o Ubuntu Touch OS oferece suporte para esses recursos (se disponíveis), deixando-o muito semelhante ao Ubuntu para desktops, com a diferença de ser portátil. O Ubuntu Touch OS também possui uma dash bar, semelhante ao do Unity no Ubuntu para desktops, o que oferece ao usuário a possibilidade de acessar seus aplicativos, arquivos e contatos de maneira mais rápida. As aplicações padrão do Ubuntu Touch OS incluem: Facebook, Twitter, Google Calendar, o navegador Chromium, reprodutor de vídeo VLC Player, Ubuntu Music Player, calculadora, dentre outros. 1 Hardware à parte do tablet, geralmente com entradas USB, teclado, saídas de áudio e vídeo, dentre outros recursos 15

3.4.2 Lançamento O Ubuntu Touch OS ainda não esta disponível para download, e ainda não há informações sobre quando isto irá ocorrer, o que sabemos até agora é que o SO deve ser lançado por volta de outubro de 2013. Versões anteriores do SO estão disponíveis para a instalação em apenas alguns tablets, o que inclui alguns dispositivos da Nexus (linha de dispositivos móveis fabricados pela Google em conjunto com um parceiro da OEM (Original Equipment Manufacturer), como por exemplo o Asus Nexus 7, LG Nexus 4 e o Samsung Galaxy Nexus são dispositivos compatíveis com o Ubuntu Touch OS. Atualmente os desenvolvedores podem ter acesso ao código fonte do projeto, podendo modificá-lo e testá-lo livremente. Empresa/Desenvolvedor Canonical Família do Sistema Operacional Linux Modelo de Código Open souce Lançamento 21 de fevereiro de 2013 Linguagem de Programação HTML5, Qt, entre outras Plataformas Suportadas ARM e x86 Licença GNU Site Oficial http://www.ubuntu.com/devices/phone http://www.ubuntu.com/devices/tablet 16