0% acharam este documento útil (0 voto)
58 visualizações

Android

O documento discute o sistema operacional Android. Ele descreve que o Android é um sistema operacional para dispositivos móveis baseado no kernel Linux, com código aberto. Também explica que o Android usa as máquinas virtuais Dalvik e ART para executar aplicativos compilados em bytecode.

Enviado por

Daniel Vecchiato
Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
58 visualizações

Android

O documento discute o sistema operacional Android. Ele descreve que o Android é um sistema operacional para dispositivos móveis baseado no kernel Linux, com código aberto. Também explica que o Android usa as máquinas virtuais Dalvik e ART para executar aplicativos compilados em bytecode.

Enviado por

Daniel Vecchiato
Direitos autorais
© © All Rights Reserved
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 54

Computação

móvel
Android
Prof. Dr. Daniel Vecchiato <[email protected]>
Roteiro
• Introdução

• Versões

• Ferramentas

• Arquitetura

2
Introdução
• É um sistema operacional para dispositivos móveis como
smartphones e tablets
• Criação: Google Inc (Android Inc) e Open HandSet
Alliance

• Baseado no kernel do Linux

• Código Aberto: Existem centenas de ROMs


personalizadas.

3
Características
• Open source
• Começou baseado no kernel 2.6 do Linux

• O kernel é responsável pelo gerenciamento de memória,


processos, threads e segurança

• Possui:
 Kit de desenvolvimento: Android SDK
 SGBD: Sqlite

4
Licença
• Apache Software License (ASL)
 Rede e telefonia
 Mais amigável ao uso comercial
 Menos restritiva

• GNU/GPL
 Modificações no kernel Linux

5
Versões
• A partir da versão 1.5, possui nomes de doces seguindo a
ordem alfabética

6
Versões
• 1.5: Cupcake (2009)

• 1.6: Donut (2009)

• 2.0 – 2.1: Eclair (2010)

• 2.2: FroYo (2010)

• 2.3: Gingerbread (2011)

• 3.0-3.2: Honeycomb (2011)

• 4.0: Ice Cream Sandwich (2011) A partir desta versão, houve alteração no
kernel linux para 3.x

• 4.1-4.2: Jelly Bean (2012)

• 4.4: Kitkat (2013)

• 5.0-5.1: Lollipop (2014)

• 6.0: Marshmallow (2015)

• 7.0: Nougat (2016)

7
Versões
• https://developer.android.com/about/dashboards/index.ht
ml

8
Software Development Kit

• Kit de desenvolvimento de Software

• API para permitir o desenvolvimento de software em


determinada linguagem de programação

• Inclui ferramentas para debug e IDEs de


desenvolvimento

9
SQLite

• Biblioteca de software que implementa uma engine de


banco de dados transacional, que não necessita
configuração ou de servidor

• Código aberto

• Ideal para dispositivos embarcados

• Self-contained: Requer mínimo suporte de bibliotecas


externas ou do sistema operacional. Perfeito para
sistemas embarcados

10
SQLite
• Alguns comandos
 ALTER TABLE
 BEGIN TRANSACTION
 COMMIT TRANSACTION
 CREATE INDEX, CREATE TABLE
 CREATE TRIGGER, CREATE VIEW
 DELETE, DROP TABLE
 DROP TRIGGER, DROP VIEW
 INSERT
 ROLLBACK TRANSACTION
 SELECT
 UPDATE

11
Máquina Virtual

• É uma implementação em software de uma máquina


(computador) que executa programas como uma
máquina física

• Para execução de código Java, precisamos de uma JVM,


já que o código Java é compilado numa linguagem
chamada bytecode, e este não consegue ser “entendido”
diretamente pelos sistemas operacionais

12
Máquina Virtual Dalvik

• Máquina virtual especializada e desenvolvida para uso


em dispositivos móveis
 Consome o mínimo de memória
 É também um compilador just-in-time

• Aplicações escritas em Java são compiladas em


bytecodes Dalvik
 arquivos .dex
 A partir da versão 5 deixa de usar a Dalvik VM e passa a
adotar a Art VM

13
Máquina Virtual Dalvik

• Permite que programas sejam distribuídos em formato


binário (bytecode) e possam ser executados em qualquer
dispositivo Android
 Independentemente do processador utilizado

• Apesar das aplicações Android serem escritas na


linguagem Java, ela não é uma máquina virtual Java, já
que não executa bytecode JVM

• O ambiente de codificação é Java, compilados para


bytecode e DEPOIS disso, transliterados para o formado
DEX (JAVA--> CLASS--> DEX)
 Aceita compilação direta também

14
Máquina Virtual Dalvik

• Dex = Dalvik Executable


 Agrupados junto com os recursos (imagens, sons e outros)
num arquivo extensão .APK

• Máquina virtual do Android que:


 Roda em CPUs lentas e com relativamente pouca memória
 Em um SO com pouco espaço de SWAP
 Permanecendo funcionando ligada por uma bateria

15
Armazenamento Externo

• Armazenamento externo
 Suporta MicroSD e USB "A" para conexão com dispositivos de
armazenamento

• Sistemas de arquivos EXTERNOS suportados


 FAT32
 Ext3
 Ext4

16
Sistema de Arquivos

• Android não contém um sistema de arquivos comum

• Compatível com UNICODE

• Todos os dados são visíveis apenas para uma aplicação


 SandBox
 Exceto dados de acesso comum

• Porém, há a possibilidade de uma app acessar dados de


outra app por meio de um "provedor de conteúdo"
 Um provedor de conteúdo é um componente opcional que
disponibiliza acesso aos dados da app (leitura / gravação)
 Sujeito às restrições impostas pelo desenvolvedor

17
YAFFS2

• Yet Another Flash File System


• Pode ter áreas de armazenamento internos ou externos
 Em um cartão SD externo, pode-se ter qualquer tipo de
estrutura de diretório
 Em geral é um cartão SD formatado em FAT para facilitar o
compartilhamento com computadores

• No armazenamento interno o controle é feito pela API do


sistema

18
YAFFS2
• Dados de uma aplicação instalada no sistema, por
exemplo, cairá no diretório /data/
 Dentro desse diretório, existe outras pasta que são criadas
pela API, além daquelas que a aplicação pode criar. Os
diretórios comuns são
 shared_prefs: Diretório que armazena as preferências
compartilhadas no formato XML;
 lib: Arquivos de bibliotecas customizadas;
 files: Arquivos que o desenvolvedor salva no armazenamento
interno;
 cache: Arquivos de cache da aplicação;
 database: Banco de dados SQLite e jornal
 Um arquivo que não esteja em um dos diretórios
shared_prefs, lib, cache ou database deve ser uma pasta que
o desenvolvedor criou e controla

19
Tipos de Armazenamento

• Shared Preferences
 Armazena dados primitivos em pares chave-valor
 Permite que a app salve e recupere pares de chave-valor de
tipos de dados primitivos:
 boolean
 floats
 ints
 longs
 Strings

20
Tipos de Armazenamento

• Internal Storage
 Armazena dados privados na memória do dispositivo
 Salva arquivos diretamente na memória interna do
dispositivo
 Arquivos salvos na memória interna são privados a sua
aplicação e outras aplicações não podem acessá-las (nem o
usuário)

21
Tipos de Armazenamento
• External Storage
 Armazena dados públicos no cartão de memória
 Cartão SD
 PenDrive

• SQLite Databases
 Armazena dados estruturados num banco de dados privado

• Network Connection
 Armazena dados na web do seu servidor de rede

22
Arquitetura

• Android é mais do que um


sistema operacional, é uma
pilha de software composta
por 5 camadas

23
Arquitetura – Linux Kernel

• Cobrir funcionalidades como encadeamento e


gerenciamento de memória de baixo nível.

• Usar um kernel do Linux permite que o Android


aproveite os recursos de segurança principais e que os
fabricantes dos dispositivos desenvolvam drivers de
hardware para um kernel conhecido.

24
Arquitetura –
Camada de abstração de
hardware

• Fornece interfaces padrão que expõem as capacidades de


hardware do dispositivo para a estrutura da Java API de
maior nível.

• Consiste em módulos de biblioteca, que implementam


uma interface para um tipo específico de componente de
hardware, como o módulo de câmera ou bluetooth.

• Quando uma Framework API faz uma chamada para


acessar o hardware do dispositivo, o sistema Android
carrega o módulo da biblioteca para este componente de
hardware.

25
Arquitetura – Android
Runtime

• Versão 5.0 (API nível 21) ou mais recente

• Cada aplicativo executa o próprio processo com uma


instância própria do Android Runtime (ART)

• O ART é projetado para executar várias máquinas


virtuais em dispositivos de baixa memória executando
arquivos DEX

• Principais recursos:
 Compilação "ahead-of-time" (AOT) e "just-in-time" (JIT)
 Coleta de lixo (GC) otimizada
 Melhor compatibilidade de depuração

26
Arquitetura – Bibliotecas
C/C++ Nativas
• Vários componentes e serviços principais do sistema
Android, como ART e HAL, são implementados por
código nativo

• A plataforma Android fornece as Java Framework APIs


para expor a funcionalidade de algumas dessas
bibliotecas nativas aos aplicativos.
 É possível acessar OpenGLpara desenhar e manipular
gráficos 2D e 3D.

• Uso do NDK para manipular código C e C++ para


acessar bibliotecas nativas.

27
Estrutura de Java API

• O conjunto completo de recursos do SO Android está


disponível pelas APIs programadas na linguagem Java
 Gerenciador de recursos
 Gerenciador de notificação
 Etc.

28
Aplicativos do Sistema

• Os aplicativos do sistema funcionam como aplicativos


para os usuários

• Os aplicativos inclusos na plataforma não têm status


especial entre os aplicativos que o usuário opta por
instalar
 É possível instalar outro navegador, teclado, etc.

• Porém aplicativos de sistemas tem acesso a um maior


conjunto de métodos da API Android

29
Ambiente de desenvolvimento

• JDK: Java Developer Kit

• Android Studio

• Android SDK

30
NDK

• Native Development Kit


 Toolset que permite desenvolver parte de um aplicativo com
código em linguagem nativa
 Possível escrever bibliotecas em C e C++
 Suportado em Android 1.5 e superior
 Usado para:
 Fazer parte da aplicação e executar de maneira mais rápida
usando codificação em mais baixo nível ( criptografia por exemplo)
 Utilizar funções e bibliotecas nativas do Android
 Aumenta bastante a complexidade do código.

31
Segurança
• Aplicações rodam em SandBox
 São áreas que não tem acesso ao restante dos recursos do
sistema
 Com exceção das permissões de acesso concedidas pelo
usuário quando a aplicação é instalada

• Antes de instalar uma app, o sistema exibe todas as


permissões necessárias para a execução
 com base nas permissões, o usuário decide se instala a app

32
Segurança

• Diferentemente do Linux, cada app do Android roda com


um UID-owner diferente
 Mantendo as aplicações isoladas

• Existem diversas opções de antivirus

33
Segurança

• Ataque por rainbow table


 É possível a quebra da senha de padrão
gráfico do Android através de rainbow
tables
 Funcionamento da senha por Padrão
gráfico
 Converte pontos do padrão gráfico em
números (para a imagem a senha seria “2
4 6 7")
 Gera hash sha-1 da sequência de números
 Armazena esse hash no arquivo
GESTURE.KEY: /data/system/gesture.key

34
Hora de praticar!
[1] Qual foi a versão do Android desenvolvida
inicialmente apenas para tablets?

35
Hora de praticar!
[1] Qual foi a versão do Android desenvolvida
inicialmente apenas para tablets?

Honeycomb

36
Hora de praticar!
[2] Qual é a máquina virtual do Android?

37
Hora de praticar!
[2] Qual é a máquina virtual do Android?
 Era a Dalvik VM agora é a ART (Android Runtime)

38
Hora de praticar!
[3] Qual é o SGBD do Android?

39
Hora de praticar!
[3] Qual é o SGBD do Android?
 SQLite

40
Hora de Praticar
[4] O Android pode ser executado sobre qualquer sistema
operacional, pois os aplicativos Android são escritos na
linguagem de programação Java e executados em uma
máquina virtual Java.

CERTO ou ERRADO?

41
Hora de Praticar
[4] O Android pode ser executado sobre qualquer sistema
operacional, pois os aplicativos Android são escritos na
linguagem de programação Java e executados em uma
máquina virtual Java.

ERRADO

42
Hora de Praticar!
[5] O sistema operacional Android tem o Linux como
base, o que permite a utilização simultânea de aplicações
que podem ser executadas em segundo plano, de forma
transparente para o usuário

CERTO ou ERRADO?

43
Hora de Praticar!
[5] O sistema operacional Android tem o Linux como
base, o que permite a utilização simultânea de aplicações
que podem ser executadas em segundo plano, de forma
transparente para o usuário

CERTO

44
Hora de Praticar!
[6] Quando um banco de dados do SQLite é criado no
Android, seus arquivos ficam armazenados no seguinte
endereço: /data/data/pacote.do.aplicativo/databases/.

CERTO ou ERRADO?

45
Hora de Praticar!
[6] Quando um banco de dados do SQLite é criado no
Android, seus arquivos ficam armazenados no seguinte
endereço: /data/data/pacote.do.aplicativo/databases/.

CERTO

46
Hora de Praticar!
[7] As aplicações desenvolvidas para Android são escritas
em Java, não sendo, entretanto, consideradas uma
máquina virtual Java.

CERTO ou ERRADO?

47
Hora de Praticar!
[7] As aplicações desenvolvidas para Android são escritas
em Java, não sendo, entretanto, consideradas uma
máquina virtual Java.

CERTO

48
Hora de Praticar!
[8] Apesar de o Android ser o sistema operacional mais
utilizado para o acesso a aplicativos por meio de
equipamentos móveis, especialmente smartphones, ainda
não se dispõe de e-readers que permitam a leitura de
livros eletrônicos nessa plataforma.

CERTO ou ERRADO?

49
Hora de Praticar!
[8] Apesar de o Android ser o sistema operacional mais
utilizado para o acesso a aplicativos por meio de
equipamentos móveis, especialmente smartphones, ainda
não se dispõe de e-readers que permitam a leitura de
livros eletrônicos nessa plataforma.

ERRADO

50
Hora de Praticar!
• [9] Todos os aplicativos de usuários executados no iOS 7
são colocados em sandbox para proteger o sistema e
outros aplicativos. O mesmo processo ocorre com o
Android 4, em que todos os softwares acima do kernel,
incluindo bibliotecas de sistema operacional e estrutura
de aplicação, são executados dentro da sandbox do
aplicativo.

CERTO ou ERRADO?

51
Hora de Praticar!
• [9] Todos os aplicativos de usuários executados no iOS 7
são colocados em sandbox para proteger o sistema e
outros aplicativos. O mesmo processo ocorre com o
Android 4, em que todos os softwares acima do kernel,
incluindo bibliotecas de sistema operacional e estrutura
de aplicação, são executados dentro da sandbox do
aplicativo.

CERTO

52
Hora de Praticar!
• [10] O Android, sistema operacional Linux multiusuário
em que cada aplicativo é visto como um usuário
diferente, atribui a cada aplicativo uma identidade de
usuário exclusiva.

CERTO ou ERRADO

53
Hora de Praticar!
• [10] O Android, sistema operacional Linux multiusuário
em que cada aplicativo é visto como um usuário
diferente, atribui a cada aplicativo uma identidade de
usuário exclusiva.

CERTO

54

Você também pode gostar