Android Core - Histórico, Arquitetura e Compilação da plataforma

56 %
44 %
Information about Android Core - Histórico, Arquitetura e Compilação da plataforma
Technology

Published on February 24, 2014

Author: felipesilveira

Source: slideshare.net

Description

Primeira aula do curso Android Core
Detalhes da arquitetura da plataforma Android, histórico e procedimento para compilação.

Material completo em http://www.felipesilveira.com.br/android-core

Android Core Felipe Silveira felipesilveira.com.br Aula 1

Android? Sistema Operacional + Plataforma de desenvolvimento + Aplicações Padrão (SMS, Maps, Calendar...) Código aberto (AOSP - Android Open Source Project) Desenvolvido pelo Google e posteriormente pela Open Handset Alliance

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 2008 - Android 1.0 is released

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 2012 -Android 4.1 / Jelly Bean

Compilando Android

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

Ccache Ferramenta utilitária para tornar o processo de compilação mais rápido $ export USE_CCACHE=1 $ ccache -M 10G

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 lib32zdev libgl1-mesa-dev g++-multilib mingw32 tofrodos pythonmarkdown libxml2-utils xsltproc

Repo Para instalar o Repo, pode-se usar o seguinte comando: $ sudo apt-get install curl $ curl https://dl-ssl.google.com/dl/googlesource/gitrepo/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ chmod a+x ~/bin/repo

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

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

Fazendo download do código Execute o comando sync: $ repo sync ou: $ repo sync - jN

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. https://github.com/cyanogenmod

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 bibliotecas de runtime.

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.

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.

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.

Entendendo o repositório dalvik - o código fonte da Dalvik Virtual Machine

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

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 , configurações de compilação e muito mais.

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.

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.

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).

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

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

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

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

Compilando $ ccache -M 10G $ . build/envsetup.sh $ set_stuff_for_environment

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 ("panda")

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.

Enfim, Compilando $ make ou $ make -jN

Executando o emulador $ emulator

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 $ adb -help

Arquitetura Android

Arquitetura Android

Por que Linux Kernel? • Gerenciador de memória e processos estável • Suporte para shared libraries • Open source!

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

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

Modificações Android Low Memory Killer - Mecanismo para matar processos quando o sistema está sendo executado com pouca memória.

Modificações Android Logging - Mecanismo de logging do android, via /dev/log

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

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.

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

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.

Libraries Surface Manager: gerencia o acesso ao display do dispositivo e camadas de gráficos 2D e 3D de múltiplas aplicações.

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.

Libraries Webkit: engine de navegador web usada na implementação do browser nativo e também na implementação dos widgets de webview.

Libraries SGL: uma engine de gráficos 2D.

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.

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

Libraries SQLite: um SGBD (Sistema gerenciador de banco de dados) relacional e otimizado para ocupar pouco espaço e ser suficiententemente rápido.

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: Tamanho Reduzido e Velocidade

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.

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

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 fork() quando necessário para executar outras aplicações.

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.

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.

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

Application Framework Window Manager - Responsável por renderizar a UI.

Application Framework Package Manager - Instala / remove aplicativos

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

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

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

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

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.

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

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.

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.

Add a comment

Related presentations

Related pages

Arquitetura da Plataforma Android - Education

Esquema básico da arquitetura da plataforma Android. Download Arquitetura da Plataforma Android. Transcript ...
Read more

Felipe Silveira - HubSlide

Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma Primeira aula do curso Android Core Detalhes da arquitetura...
Read more

Um estudo de caso da plataforma Android com Interfaces ...

Page 1. Um estudo de caso da plataforma Android com Interfaces Adaptativas Marco Antônio PACHECO JÚNIOR1 Reinaldo de Oliveira CASTRO2 Resumo Com a ...
Read more

Android - Desenvolvimento Mobile | Cursos | TargetTrust

... esteja preparado para criar aplicativos incríveis para a plataforma, dominando o Android ... - Arquitetura - Compilação ... com domínio da ...
Read more

Testes do Kit de Certificação de Aplicativos Windows ...

O APTCA não tem efeito quando o assembly faz parte de um aplicativo da Plataforma ... compilação de depuração. Histórico. ... da arquitetura do ...
Read more

A onipresente arquitetura ARM | Blog do Sergio Prado

Seu objetivo era dar continuidade ao desenvolvimento da arquitetura ... A família ARM11 adiciona um pouco mais de robustez ao core da ... A plataforma de ...
Read more

Programação Java - Novatec Editora

1.1 Histórico da linguagem A ... da Netscape, anunciaram o lançamento da plataforma ... bytecode com a extensão .class independente da arquitetura do
Read more