• Nenhum resultado encontrado

Android Core. Felipe Silveira felipesilveira.com.br. Aula 1

N/A
N/A
Protected

Academic year: 2021

Share "Android Core. Felipe Silveira felipesilveira.com.br. Aula 1"

Copied!
68
0
0

Texto

(1)

Android Core

Felipe Silveira

(2)

Android?

Sistema Operacional + Plataforma de desenvolvimento + Aplicações Padrão (SMS, Maps, Calendar...)

Código aberto (AOSP - Android Open Source Project)

(3)

Histórico

2003: Andy Rubin, Rich Miner, Nick Sears e Chris White fundam a Android, Inc

2005: Google efetua a compra da Android, Inc

2007: Open Handset Alliance announced along with Android

(4)

Histórico

2009 - Android 1.1 2009 - Android 1.5 / Cupcake 2009 - Android 1.6 / Donut 2009 - Android 2.0/2.1 / Eclair 2010 - Android 2.2 / Froyo 2010 - Android 2.3 / Gingerbread

2011 - Android 3.0 / Honeycomb – Tablet-optimized 2011 – Android 3.1 – USB host support

2011 – Android 4.0 / Ice-Cream Sandwich – merge Gingerbread and Honeycomb22

(5)
(6)

Requisitos Mínimos

● Ubuntu 10.04 LTS ● Ambiente 64 bits ● 30 GB de disco ● Python 2.7 ● GNU make 3.82 ● JDK 6 ● Git 1.7

(7)

Ccache

Ferramenta utilitária para tornar o processo de compilação mais rápido

$ export USE_CCACHE=1 $ ccache -M 10G

(8)

Dependências

Para instalar as dependências, pode-se usar o seguinte comando:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \

(9)

Repo

Para instalar o Repo, pode-se usar o seguinte comando: $ sudo apt-get install curl

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo

(10)

Git

Para instalar o Git, pode-se usar o seguinte comando:

(11)

Fazendo download do código

Crie um diretório vazio para armazenar seus arquivos de trabalho. Dê-lhe o nome que quiser:

$ mkdir working_directory $ cd working_directory Execute o repo init

$ repo init -u https://android.googlesource. com/platform/manifest

ou

$ repo init -u https://android.googlesource. com/platform/manifest -b android-4.0.1_r1

(12)

Fazendo download do código

Execute o comando sync: $ repo sync

ou:

(13)

Repositórios alternativos

Linaro

Projeto com suporte a diversos SoCs ARM (system on a chip)

Rowboat

Projeto com suporte a dispositivos usando os chips TI Sitara (como a BeagleBoard XM e a BeagleBone)

Cyanogen Mod

Projeto comunitário que visa a construção de ROMs para vários telefones comerciais.

(14)

Entendendo o repositório

bionic - a biblioteca C-runtime para o Android. Note que o Android não está usando o glibc como a maioria das

distribuições Linux. Em vez disso a biblioteca c é chamado de bionic e é baseada principalmente em fontes de

derivados do BSD. Neste diretório, você vai encontrar os arquivos fonte para a c-lib, matemática e outras

(15)

Entendendo o repositório

bootable - inicialização e código relacionado a

inicialização. Neste diretório se encontra o código fonte do bootloader a a implementação do protocolo fastboot.

(16)

Entendendo o repositório

build - a implementação do sistema de build, incluindo todos os makefiles. Um arquivo importante aqui é o script envsetup.sh que vai ajudá-lo muito quando se trabalha com a fonte da plataforma. Este arquivo será executado posteriormente para configurar as variáveis ​​de ambiente e compilar módulos específicos.

(17)

Entendendo o repositório

cts - os testes de compatibilidade. O conjunto de testes para garantir que a build está em conformidade com a especificação do Android. Iremos falarar mais a respeito dessas ferramentas posteriormente.

(18)

Entendendo o repositório

(19)

Entendendo o repositório

development - projetos relacionados ao desenvolvimento de aplicações, tais como o código-fonte do SDK e NDK.

(20)

Entendendo o repositório

device - código específico do produto para diferentes dispositivos. Este é o lugar para encontrar módulos de hardware para os diferentes dispositivos Nexus ,

(21)

Entendendo o repositório

external - contém o código fonte para todos os projetos de código aberto externos, tais como SQLite, Freetype e webkit.

(22)

Entendendo o repositório

frameworks - esta pasta é essencial para o Android , uma vez que contém todo o código do framework . Aqui você vai encontrar a implementação de serviços essenciais como o System Server, que contém o PackageManager. Uma grande parte do mapeamento entre as APIs

aplicação java e as bibliotecas nativas também é feito aqui.

(23)

Entendendo o repositório

hardware - código-fonte relacionado ao hardware, como a especificação de camada de abstração de hardware

Android (HAL - Hardware Abstraction Layer). Esta pasta também contém a camada de interface de rádio (para comunicação com modem).

(24)

Entendendo o repositório

out - o diretório que contém os artefatos resultantes da compilação.

(25)

Entendendo o repositório

packages - contém o código fonte para os aplicativos padrão, como contatos, calendário, navegador.

(26)

Entendendo o repositório

prebuilts - contém arquivos que são distribuídos em forma binária por conveniência. Exemplos: toolchain, emulator kernel

(27)

Entendendo o repositório

system - arquivos de código fonte para o núcleo do sistema Android. Esse é o sistema Linux mínimo que é

iniciado antes do Dalvik VM e quaisquer serviços baseados em Java são ativados. Isso inclui o código fonte para o

processo de inicialização e o script init.rc padrão que fornecem a configuração dinâmica da plataforma

(28)

Compilando

$ ccache -M 10G

$ . build/envsetup.sh

(29)

Seleção de target

$ lunch full-eng

Build name Device Notas

full emulator build completa

com todas linguagens, aplicações, input methods

full_maguro maguro build completa

para o Galaxy Nexus

GSM/HSPA+ ("maguro")

full_panda panda build completa

para a PandaBoard

(30)

Seleção de target

Buildtype Uso

user acesso limitado; comumente

usado para builds de produção

userdebug configuração parecida com user,

porém com acesso root e debug

eng configuração de

desenvolvimento, com algumas ferramentas de debug adicionais.

(31)

Enfim, Compilando

$ make

ou

(32)

Executando o emulador

(33)

ADB

O ADB (Android debug bridge) é uma ferramenta utilizada para acessar muitos dos recursos do emulador e de um telefone anexado ao computador via USB

$ adb devices

(34)
(35)
(36)

Por que Linux Kernel?

• Gerenciador de memória e processos estável • Suporte para shared libraries

(37)

Modificações Android

Ashmem - Anonymous shared memory - Implementação Android para o gerenciador de memória compartilhada entre processos.

(38)

Modificações Android

Binder - Implementação do OpenBinder para android, contendo também a implementação da runtime AIDL.

Desenvolvido para resolver a necessidade de execução de código em processos separados (Aplicações e Serviços) sem o overhead que o IPC introduziria

(39)

Modificações Android

Low Memory Killer - Mecanismo para matar processos quando o sistema está sendo executado com pouca

(40)

Modificações Android

(41)

Modificações Android

Pmem - Process memory allocator - driver de alocação de memória física para os processos

(42)

Modificações Android

WakeLocks - Mecanismo de gerência de energia, otimizado para dispositivos móveis. O controle dos

wakelocks é exposto à camada de aplicações através do componente PowerManager.

(43)

Modificações Android

Alarm Timers - Suporte na camada de kernel para o AlarmManager, que permite que o sistema "acorde" depois de certos eventos.

(44)

Modificações Android

RAM Console - Extensão que permite ao kernel fazer um dump de dados importante para a memória RAM do

device quando ocorre um 'pânico' - o sistema é reiniciado por alguma falha.

(45)

Libraries

Surface Manager: gerencia o acesso ao display do

dispositivo e camadas de gráficos 2D e 3D de múltiplas aplicações.

(46)

Libraries

Media Framework: as bibliotecas suportam execução e gravação da maioria dos formatos de áudio e vídeo, bem como exibição de imagens, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG.

(47)

Libraries

Webkit: engine de navegador web usada na

implementação do browser nativo e também na implementação dos widgets de webview.

(48)

Libraries

(49)

Libraries

3D libraries: uma implementação baseada na especificação OpenGL ES 1.0, a qual utiliza tanto

aceleração de hardware 3D e um avançado e otimizado software para renderização de modelos tridimensionais.

(50)

Libraries

FreeType: renderização de fontes em formatos bitmaps e vetoriais.

(51)

Libraries

SQLite: um SGBD (Sistema gerenciador de banco de

dados) relacional e otimizado para ocupar pouco espaço e ser suficiententemente rápido.

(52)

Libraries

Biblioteca de sistema C (libc): é uma implementação da biblioteca C padrão, otimizada para dispositivos que suportam a plataforma Linux (embbeded- linux). A

implementação da libc em Android é conhecida como Bionic e tem características muito importantes:

(53)

Android Runtime

Android possui sua própria máquina virtual Java: A Dalvik VM, mais rápida e leve, com set de instruções menor do que a JVM.

(54)

Android Runtime

Existe um passo adicional, que é a conversão dos arquivos .class em .dex, que são reconhecidos e executados pela Dalvik VM.

(55)

Android Runtime

Na inicialização do sistema, é criado um processo para a máquina virtual chamado Zygote. A partir desse processo, outras instâncias da máquina virtual são criadas com

(56)

Android Runtime

Para completar a camada de Android Runtime, temos as core libraries, que sofreram pouca ou nenhuma

modificação no projeto AOSP. São elas: Data structures, Utilities, File access, Network Access, Graphics, etc.

(57)

Application Framework

Acima das camadas de Libraries e Runtime está a camada Application Framework. Esta é a camada responsável por prover às aplicações APIs amigáveis que permitem o acesso às funcionalidades da plataforma.

(58)

Application Framework

Activity Manager - Gerencia o ciclo de vida de aplicações. Responsável por iniciar, parar e retomar as diversas

(59)

Application Framework

(60)

Application Framework

(61)

Application Framework

Telephony Manager - Permite a interação com os serviços de telefonia, como SMS e MMS.

(62)

Application Framework

Content Providers - O componente responsável por compartilhar dados entre aplicações.

(63)

Application Framework

Resource Manager - Gerenciamento de recursos de aplicações - por exemplo, imagens, sons, etc

(64)

Application Framework

View System - Fornece às aplicações os widgets (como botões, listas, etc) e gerencia seu comportamento.

(65)

Application Framework

Location Manager - Permite que as aplicações acessem serviços baseados em localização seja por GPS, celltower IDs, ou bancos de dados Wi-Fi locais.

(66)

Application Framework

XMPP - Mecanismo de troca de mensagens entre aplicações.

(67)

Applications

A última camada da stack Android - Applications - contém as aplicações, que apresentam conteúdo ao usuárioe

interage com este diretamente.

Existem algumas aplicações que já vem embutidas na

plataforma, como o cliente de Email, de SMS, Calendário, Mapas, Navegador, Home Screen, Contatos e outros.

(68)

Applications

Nessa camada comumente temos diversas customizações feitas pelas fabricantes de celular, como o MotoBlur, da Motorola, o Sense da HTC e o TouchWiz, da Samsung. Essa flexibilidade contribuiu para a adoção da plataforma por diversos fabricantes e sua decorrente popularização.

Referências

Documentos relacionados

Mas, no caso de não existir a temporização poderá ocorrer desarmes indevidos durante oscilação de tensão no sistema, seja por curto-circuito próximo

Fica  autorizada  pela  presente  Convenção  Coletiva  de  Trabalho  a  adoção  do  regime  de  compensação  de  horas 

Para tanto, são consideradas as relações de antecedentes tais como confiança, satisfação, atratividade das alternativas e custos de troca sobre diferentes tipos

“Linguagem e política: sobre uma Kehre implícita na filosofia de Martin Heidegger”, Heidegger, Linguagem e Tradução: colóquio internacional, Março de 2002, (org..

ORGANIZ GESTÃO DE PROJETOS 4º HELOISA DOMINGUES RAYMUNDO THURY ADM161N01 Noturno ADM161N02 Noturno.. CAPITAL GESTÃO DE

A avaliação mais profunda da questão da penetração da eficiência energética no planejamento energético de longo prazo, bem como os resultados obtidos por meio

Os alunos matriculados nos cursos de graduação e de pós-graduação, portadores de afecções congênitas ou adquiridas, infecções, traumatismos ou outras condições

Barcelona, Auditorio de Zaragoza, Auditorio 400 del Museo Reina Sofía (Madrid), ciclo CDMC (Madrid), INJUVE (Madrid), Sala Kursaal (San Sebastián), Festival JOMEX’12