[Unicamp Fórum Permanente] Android Faixa Branca – 2011

Post on 17-May-2015

237 views 1 download

description

Palestra ministrada no Fórum Permanente de Software Livre da Unicamp

Transcript of [Unicamp Fórum Permanente] Android Faixa Branca – 2011

Android Faixa BrancaDouglas Drumond

drumond.douglas@gmail.com

E aí?

E aí?

• Motivação

E aí?

• Motivação

• Por dentro do Android

E aí?

• Motivação

• Por dentro do Android

• Por dentro das aplicações

E aí?

• Motivação

• Por dentro do Android

• Por dentro das aplicações

• Ferramentas de desenvolvimento

Por que Android?

Crescimento

Source: Gartner (Feb 2011)

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Source: Gartner (Feb 2011)

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Android Market share

Source: Techcrunch & Google

Android Market share

Source: Techcrunch & Google

100 milhõesTotal de Ativações

Android Market share

36OEM’s

215operadoras

450kdesenvolvedores

310modelos

112países

Android Market (apps)

Android Market (apps)

• Aproximadamente 200.000

Android Market (apps)

• Aproximadamente 200.000

• 4,5 bilhões de downloads

Android Market (apps)

• Aproximadamente 200.000

• 4,5 bilhões de downloads

• 1 bilhão nos últimos 60 dias

O que é?

O que é?

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Livre

Livre

Livre

Livre

Livre

• the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"

http://twitter.com/#!/arubin/status/27808662429

Versões

Versões

Arquitetura

Arquitetura

Linux Kernel

Arquitetura

Linux Kernel

Bibliotecas Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Arquitetura

Linux Kernel

Display Driver

Keypad Driver

Camera Driver

WiFi Driver

Flash Memory Driver

Audio Driver

Gerenciamento de energia

IPC

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Dalvik

Arquitetura

Dalvik

Arquitetura

• Baseada em registradores

• .dex

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Arquitetura

Bibliotecas

Surface Manager

OpenGL ES

Media Framework

FreeType

SSL

SQLite

libc (bionic)

WebKit

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Arquitetura

Application Framework

Activity Manager

Window Manager

Content Providers

Telephony Manager

Location Manager

Resource Manager

View System

Notification Manager

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Arquitetura

Aplicações

Home

Contacts

Phone

Browser

Email

SMS

Music

Maps

Dissecando as Aplicações

Activity

Service

Content Provider

Intent

Intent

Intent

Intent

Intent

Intent

Intent

• Possui um alvo facultativo

Intent

• Possui um alvo facultativo

• Se não tiver especificado alvo, o sistema encontra um

Intent

• Possui um alvo facultativo

• Se não tiver especificado alvo, o sistema encontra um

• Pode executar uma Activity ou Service específico

Intent

• Possui um alvo facultativo

• Se não tiver especificado alvo, o sistema encontra um

• Pode executar uma Activity ou Service específico

• IntentFilters

Broadcast Receiver

Broadcast Receiver

• Não possui interface (com usuário)

Broadcast Receiver

• Não possui interface (com usuário)

• Roda em segundo plano

Broadcast Receiver

• Não possui interface (com usuário)

• Roda em segundo plano

• Reage a mensagens de broadcast

Broadcast Receiver

• Não possui interface (com usuário)

• Roda em segundo plano

• Reage a mensagens de broadcast

• Exemplo: carga de bateria

Service

ServiceonCreate()

onStart()

em execução

onDestroy()

shutdown

Ciclo de vida em atividade

Ciclo de vida completo

Activity

Activity

• Interface

Activity

• Interface

• Um objetivo

Activity

• Interface

• Um objetivo

• Várias por aplicativo

Activity

• Interface

• Um objetivo

• Várias por aplicativo

• Pode iniciar outras activities

Activity

Activity

• 3 estados: ativa, em pausa e parada

Activity

• 3 estados: ativa, em pausa e parada

• 3 ciclos de vida

Activity

• 3 estados: ativa, em pausa e parada

• 3 ciclos de vida

• pode morrer a qualquer momento se não estiver ativa

Activity

ActivityonCreate()

ActivityonCreate()

onStart()

ActivityonCreate()

onStart()

onResume()

ActivityonCreate()

onStart()

onResume()

em execução

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Primeiro plano

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Ciclo de vida completo

Multitarefa

Multitarefa

Multitarefa

onCreate()

Multitarefa

onPause()

Multitarefa

Multitarefa

onResume()

Multitarefa

onPause()

Multitarefa

onStop()

Multitarefa

onStop() onCreate()

Multitarefa

onStop() onCreate()

onPause()

Multitarefa

onStop() onCreate()

onStop()

onPause()

Multitarefa

onStop() onCreate()

onStop()

onPause()

Multitarefa

onStop() onCreate() onCreate()

onStop()

onPause()

Multitarefa

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Multitarefa

onStart()

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Ferramentas

Pré-requisitos

Pré-requisitos

• JDK

Pré-requisitos

• JDK

• Android SDK

Ambiente

Ambiente

• Linux

Ambiente

• Linux

• Mac OS X (Intel)

Ambiente

• Linux

• Mac OS X (Intel)

• Windows XP ou superior

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

• Remote debugger

• logcat

• DDMS

Ferramentas

Ferramentas

Ferramentas

Google Chrome

Google Chrome

Android Market

Android Market

Desenvolvedor escolhe o preço

Android Market

Desenvolvedor escolhe o preço

30/70

Android Market

Desenvolvedor escolhe o preço

30/70

US$ 99,00/ano

US$ 25,00 uma única vez

Android Market

Desenvolvedor escolhe o preço

30/70

Tarefa para casa

• developer.android.com

ありがとう Obrigado

Créditos

•http://www.flickr.com/photos/xazac/5090246138/sizes/s/in/photostream/ •http://www.flickr.com/photos/bfishadow/4290430790/sizes/s/in/photostream/ •http://www.flickr.com/photos/nickbutcher/5529239187/sizes/m/in/photostream/ •http://www.flickr.com/photos/3bilder/5113921580/sizes/m/in/photostream/ •http://www.flickr.com/photos/abulhussain/4543434080/sizes/o/in/photostream/ •http://developer.android.com/guide/developing/debugging/debugging-tracing.html