[MO901] Android 下忍 – 2011

149
Android 下忍 Douglas Drumond [email protected]

description

Pa

Transcript of [MO901] Android 下忍 – 2011

Page 1: [MO901] Android 下忍 – 2011

Android 下忍Douglas Drumond [email protected]

Page 2: [MO901] Android 下忍 – 2011

Por que Android?

Page 3: [MO901] Android 下忍 – 2011

Crescimento

Source: Gartner (Feb 2011)

Page 4: [MO901] Android 下忍 – 2011

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Source: Gartner (Feb 2011)

Page 5: [MO901] Android 下忍 – 2011

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Page 6: [MO901] Android 下忍 – 2011

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Page 7: [MO901] Android 下忍 – 2011

Crescimento

Symbian AndroidRIM iOSMicrosoft Other OS

Symbian Android RIMiOS Microsoft Other OS

Source: Gartner (Feb 2011)

Page 8: [MO901] Android 下忍 – 2011

Android Market share

Source: Techcrunch

Page 9: [MO901] Android 下忍 – 2011

Android Market share

Source: Techcrunch

Page 10: [MO901] Android 下忍 – 2011

Android Market (apps)

Page 11: [MO901] Android 下忍 – 2011

Android Market (apps)

• Aproximadamente 300.000

Page 12: [MO901] Android 下忍 – 2011

Android Market (apps)

• Aproximadamente 300.000

• 30.000 novos aplicativos por mês

Page 13: [MO901] Android 下忍 – 2011

Android Market (apps)

• Aproximadamente 300.000

• 30.000 novos aplicativos por mês

• Estimativa de download: 3,8 bilhões de apps

Page 14: [MO901] Android 下忍 – 2011

O que é?

Page 15: [MO901] Android 下忍 – 2011

O que é?

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 16: [MO901] Android 下忍 – 2011

Livre

Page 17: [MO901] Android 下忍 – 2011

Livre

Page 18: [MO901] Android 下忍 – 2011

Livre

Page 19: [MO901] Android 下忍 – 2011

Livre

• Acesso ao código-fonte

Page 20: [MO901] Android 下忍 – 2011

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

Page 21: [MO901] Android 下忍 – 2011

Versões

Page 22: [MO901] Android 下忍 – 2011

Arquitetura

Page 23: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Page 24: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas Dalvik

Page 25: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Dalvik

Page 26: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 27: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 28: [MO901] Android 下忍 – 2011

Arquitetura

Page 29: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Page 30: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Display Driver

Keypad Driver

Camera Driver

WiFi Driver

Flash Memory Driver

Audio Driver

Gerenciamento de energia

IPC

Page 31: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 32: [MO901] Android 下忍 – 2011

Arquitetura

Page 33: [MO901] Android 下忍 – 2011

Dalvik

Arquitetura

Page 34: [MO901] Android 下忍 – 2011

Dalvik

Arquitetura

• Baseada em registradores

• .dex

Page 35: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 36: [MO901] Android 下忍 – 2011

Arquitetura

Page 37: [MO901] Android 下忍 – 2011

Arquitetura

Bibliotecas

Page 38: [MO901] Android 下忍 – 2011

Arquitetura

Bibliotecas

Surface Manager

OpenGL ES

Media Framework

FreeType

SSL

SQLite

libc (bionic)

WebKit

Page 39: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 40: [MO901] Android 下忍 – 2011

Arquitetura

Page 41: [MO901] Android 下忍 – 2011

Arquitetura

Application Framework

Page 42: [MO901] Android 下忍 – 2011

Arquitetura

Application Framework

Activity Manager

Window Manager

Content Providers

Telephony Manager

Location Manager

Resource Manager

View System

Notification Manager

Page 43: [MO901] Android 下忍 – 2011

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 44: [MO901] Android 下忍 – 2011

Arquitetura

Page 45: [MO901] Android 下忍 – 2011

Arquitetura

Aplicações

Page 46: [MO901] Android 下忍 – 2011

Arquitetura

Aplicações

Home

Contacts

Phone

Browser

Email

SMS

Music

Maps

Page 47: [MO901] Android 下忍 – 2011

Dissecando as Aplicações

Page 48: [MO901] Android 下忍 – 2011

Activity

Page 49: [MO901] Android 下忍 – 2011

Activity

• Interface

Page 50: [MO901] Android 下忍 – 2011

Activity

• Interface

• Um objetivo

Page 51: [MO901] Android 下忍 – 2011

Activity

• Interface

• Um objetivo

• Várias por aplicativo

Page 52: [MO901] Android 下忍 – 2011

Activity

• Interface

• Um objetivo

• Várias por aplicativo

• Pode iniciar outras activities

Page 53: [MO901] Android 下忍 – 2011

Activity

• Interface

• Um objetivo

• Várias por aplicativo

• Pode iniciar outras activities

• Herda de Activity

Page 54: [MO901] Android 下忍 – 2011

Activity

Page 55: [MO901] Android 下忍 – 2011

Activity

Page 56: [MO901] Android 下忍 – 2011

Activity

• 3 estados: ativa, em pausa e parada

Page 57: [MO901] Android 下忍 – 2011

Activity

• 3 estados: ativa, em pausa e parada

• 3 ciclos de vida

Page 58: [MO901] Android 下忍 – 2011

Activity

• 3 estados: ativa, em pausa e parada

• 3 ciclos de vida

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

Page 59: [MO901] Android 下忍 – 2011

Activity

Page 60: [MO901] Android 下忍 – 2011

ActivityonCreate()

Page 61: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

Page 62: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

Page 63: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

em execução

Page 64: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Page 65: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Page 66: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Primeiro plano

Page 67: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 68: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 69: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 70: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Visível

Page 71: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

Primeiro plano

Visível

Page 72: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Page 73: [MO901] Android 下忍 – 2011

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Ciclo de vida completo

Page 74: [MO901] Android 下忍 – 2011

Service

Page 75: [MO901] Android 下忍 – 2011

Service

• Sem interface

Page 76: [MO901] Android 下忍 – 2011

Service

• Sem interface

• Roda em segundo plano

Page 77: [MO901] Android 下忍 – 2011

Service

• Sem interface

• Roda em segundo plano

• Executa na thread principal

Page 78: [MO901] Android 下忍 – 2011

Service

• Sem interface

• Roda em segundo plano

• Executa na thread principal

• Herda de Service

Page 79: [MO901] Android 下忍 – 2011

Service

Page 80: [MO901] Android 下忍 – 2011

Service

Page 81: [MO901] Android 下忍 – 2011

Service

• Ativo ou parado

Page 82: [MO901] Android 下忍 – 2011

Service

• Ativo ou parado

• Roda em segundo plano

Page 83: [MO901] Android 下忍 – 2011

Service

• Ativo ou parado

• Roda em segundo plano

• Pouco provável de ser morto

Page 84: [MO901] Android 下忍 – 2011

Service

Page 85: [MO901] Android 下忍 – 2011

ServiceonCreate()

Page 86: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

Page 87: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

em execução

Page 88: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

em execução

onDestroy()

Page 89: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

em execução

onDestroy()

Ciclo de vida em atividade

Page 90: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

em execução

onDestroy()

shutdown

Ciclo de vida em atividade

Page 91: [MO901] Android 下忍 – 2011

ServiceonCreate()

onStart()

em execução

onDestroy()

shutdown

Ciclo de vida em atividade

Ciclo de vida completo

Page 92: [MO901] Android 下忍 – 2011

Content Provider

Page 93: [MO901] Android 下忍 – 2011

Content Provider

• Disponibiliza dados para outros aplicativos

Page 94: [MO901] Android 下忍 – 2011

Content Provider

• Disponibiliza dados para outros aplicativos

• Sistema de arquivos ou SQLite

Page 95: [MO901] Android 下忍 – 2011

Content Provider

• Disponibiliza dados para outros aplicativos

• Sistema de arquivos ou SQLite

• Herda de ContentProvider

Page 96: [MO901] Android 下忍 – 2011

Content Provider

Page 97: [MO901] Android 下忍 – 2011

Broadcast Receiver

Page 98: [MO901] Android 下忍 – 2011

Broadcast Receiver

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

Page 99: [MO901] Android 下忍 – 2011

Broadcast Receiver

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

• Roda em segundo plano

Page 100: [MO901] Android 下忍 – 2011

Broadcast Receiver

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

• Roda em segundo plano

• Reage a mensagens de broadcast

Page 101: [MO901] Android 下忍 – 2011

Broadcast Receiver

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

• Roda em segundo plano

• Reage a mensagens de broadcast

• Exemplo: carga de bateria

Page 102: [MO901] Android 下忍 – 2011

Broadcast Receiver

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

• Roda em segundo plano

• Reage a mensagens de broadcast

• Exemplo: carga de bateria

• Herda de BroadcastReceiver

Page 103: [MO901] Android 下忍 – 2011

Broadcast Receiver

Page 104: [MO901] Android 下忍 – 2011

Broadcast Receiver

onReceive()

Page 105: [MO901] Android 下忍 – 2011

Broadcast Receiver

onReceive()

em execução

Page 106: [MO901] Android 下忍 – 2011

Broadcast Receiver

onReceive()

em execução

Fim

Page 107: [MO901] Android 下忍 – 2011

Broadcast Receiver

onReceive()

em execução

Fim

Ciclo de vida em atividade

Page 108: [MO901] Android 下忍 – 2011

Intent

Page 109: [MO901] Android 下忍 – 2011

Intent

• Possui um alvo facultativo

Page 110: [MO901] Android 下忍 – 2011

Intent

• Possui um alvo facultativo

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

Page 111: [MO901] Android 下忍 – 2011

Intent

• Possui um alvo facultativo

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

• Pode executar uma Activity ou Service específico

Page 112: [MO901] Android 下忍 – 2011

Intent

• Possui um alvo facultativo

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

• Pode executar uma Activity ou Service específico

• IntentFilters

Page 113: [MO901] Android 下忍 – 2011

Intent

Page 114: [MO901] Android 下忍 – 2011

Intent

Page 115: [MO901] Android 下忍 – 2011

Intent

Page 116: [MO901] Android 下忍 – 2011

Intent

Page 117: [MO901] Android 下忍 – 2011

Intent

Page 118: [MO901] Android 下忍 – 2011

Ferramentas

Page 119: [MO901] Android 下忍 – 2011

Pré-requisitos

Page 120: [MO901] Android 下忍 – 2011

Pré-requisitos

• JDK

Page 121: [MO901] Android 下忍 – 2011

Pré-requisitos

• JDK

• Android SDK

Page 122: [MO901] Android 下忍 – 2011

Ambiente

Page 123: [MO901] Android 下忍 – 2011

Ambiente

• Linux

Page 124: [MO901] Android 下忍 – 2011

Ambiente

• Linux

• Mac OS X (Intel)

Page 125: [MO901] Android 下忍 – 2011

Ambiente

• Linux

• Mac OS X (Intel)

• Windows XP ou superior

Page 126: [MO901] Android 下忍 – 2011

Ferramentas

Page 127: [MO901] Android 下忍 – 2011

Ferramentas

Page 128: [MO901] Android 下忍 – 2011

Ferramentas

Page 129: [MO901] Android 下忍 – 2011

Ferramentas

Page 130: [MO901] Android 下忍 – 2011

Ferramentas

Page 131: [MO901] Android 下忍 – 2011

Ferramentas

Page 132: [MO901] Android 下忍 – 2011

Ferramentas

• Remote debugger

• logcat

• DDMS

Page 133: [MO901] Android 下忍 – 2011

Ferramentas

Page 134: [MO901] Android 下忍 – 2011

Ferramentas

Page 135: [MO901] Android 下忍 – 2011

Ferramentas

Page 136: [MO901] Android 下忍 – 2011

Google Chrome

Page 137: [MO901] Android 下忍 – 2011

Google Chrome

Page 138: [MO901] Android 下忍 – 2011

Android Market

Page 139: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

Page 140: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

30/70

Page 141: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

30/70

US$ 99,00/ano

Page 142: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

30/70

Page 143: [MO901] Android 下忍 – 2011

Android Market

Page 144: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

Page 145: [MO901] Android 下忍 – 2011

Android Market

Desenvolvedor escolhe o preço

30/70

Page 146: [MO901] Android 下忍 – 2011

US$ 25,00 uma única vez

Android Market

Desenvolvedor escolhe o preço

30/70

Page 147: [MO901] Android 下忍 – 2011

O que estão esperando?

• developer.android.com

Page 148: [MO901] Android 下忍 – 2011

Obrigado

Page 149: [MO901] Android 下忍 – 2011

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