Aula 1 - Introduçãoendler/courses/Android... · 12 Arquitetura:+Framework+...
Transcript of Aula 1 - Introduçãoendler/courses/Android... · 12 Arquitetura:+Framework+...
Desenvolvimento para Android Aula 1
Prof. Markus Endler
2
O que é o Android?
A plataforma Android é composta de um sistema operacional, middleware e aplicações.
O Android SDK (So8ware Development Kit) oferece ferramentas e APIs necessárias para o desenvolvimento de aplicações para a plataforma Android usando a linguagem de programação Java.
3
Open Handset Alliance (OHA)
A Open Handset Alliance (OHA) é um consórcio de mais de 80 empresas que tem o objeKvo de desenvolver padrões abertos para disposiKvos móveis.
Entre as empresas parKcipantes estão Google, HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung Electronics, LG Electronics, T-‐Mobile, Nvidia, entre outros.
hYp://www.openhandsetalliance.com
4
Smartphones
HTC G1, Droid, TaYoo
Motorola Droid (X)
Suno S880 Samsung Galaxy
Sony Ericsson
5
Tablets
Velocity Micro Cruz Gome FlyTouch
Acer beTouch
Dawa D7 Toshiba Android SmartBook Cisco Android Tablet
Samsung Galaxy Tab
6
Market share: plataformas móveis
Relatório da comScore em setembro de 2011 sobre o mercado americano de assinantes de telefonia móvel
hYp://www.comscore.com/Press_Events/Press_Releases/2011/11/comScore_Reports_September_2011_U.S._Mobile_Subscriber_Market_Share
7
Market share: versões do Android
hYp://developer.android.com/resources/dashboard/plamorm-‐versions.html
8
CaracterísKcas
Framework de aplicação que permite reuso e subsKtuição de componentes
Máquina virtual Dalvik oKmizada para disposiKvos móveis
Browser integrado baseado no WebKit (open-‐source)
Gráficos oKmizados uKlizando biblioteca gráfica customizada 2D e gráficos 3D baseados na especificação OpenGL ES 1.0 (aceleração via hardware opcional)
Banco de dados SQLite para armazenamento local
9
CaracterísKcas (cont.)
Suporte para arquivos de mídia – áudio, vídeo, imagens – (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
Telefonia GSM (dependente do hardware)
Tecnologias de comunicação Bluetooth, EDGE, 3G, e WiFi (dependente de hardware)
Câmera, GPS, compasso, e acelerômetro (dependente de hardware) Ambiente de desenvolvimento que inclui emulador de disposiKvo,
ferramentas para debug, monitoração de memória e performance, e um plugin para desenvolvimento no Eclipse
10
Arquitetura do Android
hYp://developer.android.com/guide/basics/what-‐is-‐android.html
11
Arquitetura: Aplicações
O sistema Android vem com um conjunto de aplicações incluindo um cliente de email, so8ware para SMS (envio e recebimento), calendário, so8ware para visualização de mapas (integração com Google Maps), browser, contatos, entre outors.
Todas as aplicações são escritas uKlizando a linguagem Java.
12
Arquitetura: Framework
O Framework Android permite a criação de aplicações que uKlizem os diversos recursos do disposiKvo móvel e se integrem ao sistema e demais aplicações. É possível acessar o hardware do disposiKvo, obter a localização atual, configurar alarmes, executar serviços em background, adicionar noKficações, entre outros.
Desenvolvedores tem acesso irrestrito às mesmas APIs uKlizadas pelas aplicações que já vem no sistema, já mencionadas.
Uma nova aplicação desenvolvida pode publicar ao Framework suas funcionalidades e outras aplicações podem fazer uso dessas funcionalidades. Esse mecanismo permite que componentes sejam subsKtuídos no Framework.
13
Arquitetura: Framework (cont.)
Para todas as aplicações, o Framework fornece um conjunto de serviços, que inclui: • Sistema de Views uKlizado para construir aplicações contendo listas, grids,
caixas de texto, botões, web browser, entre outros
• Os Content Providers permitem que as aplicações acessem dados de outras aplicações (por exemplo, Lista de Contatos) ou comparKlhem seus próprios dados
• Um Resource Manager, que fornece acesso a recursos como textos localizados, gráficos e arquivos de layout
• Um NoKficaKon Manager que permite que aplicações insiram alertas customizados na barra de status
• Um AcKvity Manager que gerencia o ciclo-‐de-‐vida de aplicações e fornece uma pilha de navegação entre telas (AcKviKes) entre as aplicações que estão executando
14
Arquitetura: Bibliotecas
Estão incluas uma série de bibliotecas C/C++ que são usadas por vários componentes do sistema Android.
A uKlização destas bibliotecas é possível através do Framework Android.
15
Arquitetura: Bibliotecas (cont.) SSL SQLite WebKit (engine de browser web para páginas embuKdas)
Audio Manager Media Framework
• Para audio, video, e formatos de imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
Bibliotecas Gráficas:
Scalable Graphics Library (SGL-‐ para 2D)
OpenGL for Embedded Devices (para 3D) FreeType (fontes vector and bitmap fonts)
Surface Manager Faz composição 2D e 3D de windows, widgets, apps, toolbars
16
Arquitetura: RunKme
Android incluí um conjunto de bibliotecas padrão que fornece a maioria das funcionalidades padrão da linguagem Java.
Cada App Android executa em seu próprio processo, com uma instância da máquina virtual Dalvik.
A Dalvik foi criada de forma que um disposiKvo móvel possa executar múlKplas VMs eficientemente.
Pode-‐se criar várias threads em um processo (App + VM Dalvik)
17
Arquitetura: RunKme (cont.)
A Dalvik executa arquivos no formato .dex (Dalvik Executable) – oKmizado para uKlização mínima de memória
É uma máquina virtual baseada em registros que executa classes compiladas Java que são transformadas para formato .dex pela ferramenta dx
A Dalvik depende do kernel Linux para funções de baixo nível como threading e gerenciamento de memória
18
Arquitetura: Linux Kernel
O Android executa sobre Linux 2.6 para serviços de sistema padrão como segurança, gerenciamento de memória, gerenciamento de processos, camadas de rede, e drivers.
O kernel também atua como uma camada de abstração entre o hardware e o resto do sistema Android.
19
Programação
O SDK fornece um grupo de ferramentas para facilitar o desenvolvimento Android
Essas ferramentas são acessadas via linha de comando ou através do plugin para Eclipse chamado ADT (Android Development Tools)
Passos básicos para desenvolvimento de uma
aplicação Android
20
Programação – Fases Setup – fase de preparação do ambiente de desenvolvimento. Criação dos
disposiKvos virtuais e preparação dos dispisiKvos reais para instalação das aplicações desenvolvidas.
Development – fase de configuração e desenvolvimento do projeto Android, contendo todos os arquivos de código e recursos da aplicação.
Debugging and TesKng – durante esta fase será produzido um arquivo debugável .apk que será possível ser instalado e executado em um disposiKvo virtual ou real. • O ADT fornece vários recursos para isntrumentacão e depuracão (através da
ferramenta Android Debug Bridge adb)
Publishing – fase onde a aplicação será configurada e construída para distribuição para usuários. Para isso, ela terá que ser assinada com um cerKficado • (cifrado com uma chave pública)
21
Elementos do Projeto Android
22
Criando uma App
O Desenvolvimento de uma app Android Kpicamente envolve:
Criar as telas (layouts, compostas de views) – editor gráfico para os arquivos xml
Criar uma AcKvity para cada layout • A mainAcKvity é o ponto de entrada na sua App
• AcKviKes devem ser subclasses de AcKvity totalmente independentes
Projetar a transferência de controle entre AcKviKes (Intents) Projetar o BD SQLite para persisKr o estado de sua app Possivelmente:
• Implementar interação com AcKviKes de outra App
• Implementar acesso/atualizacnao um content provider
• Implementar interação com algum serviço
Editar o AndroidManifest da app, incluindo as permissões, declarando as compoenentes, e indicando os recursos necessários
23
Depuração A Android Debug Bridge (adb) é uma ferramenta de linha de comando que permite
comunicação entre a máquina de desenvolvimento (Dev) e os emuladores ou disposiKvos reais conectados viaUSB, pada depuração, redirecionamento de portas, e copia de arquivos.
É um programa cliente-‐servidor (no Dev) e interagem com adb daemons nos emuladores/disposiKvos.
Execute ./adb na pasta <pasta-‐sdk>/plamorm-‐tools
O servidor procura por emuladores/disposiKvos conectados e cada um encontrado recebe um par de portas (na faixa 5555 – 5585)
server
cliente
Maq. Desenvolvimento
Adb daemon
Adb daemon
Emulator
Device
5555/5556
5557/5558
24
Assinatura de Apps e Updates Todo .apk precisa ser assinado Mas, para fim de testes e depuração local (rodar no emulador ou disposiKvo
conectado ao PC), o próprio Android SDK já criou um debug cerKficate, que está em <user-‐home>/.android/debug.keystore
• Usando o comando keytool (Java Cryptography Architecture) pode-‐se visualizar esse debug cerKficate
Usa-‐se tb comando keytool, para gerar uma chave privada (em outro arquivo keystore, protegido por uma senha) .
• Chave privada é usada para cifrar um digest (um hash) do arquivo .apk Isso será a assinatura de sua app.
Uma vez que sua app foi assinada, toda futura atualização dela terá que ter a mesma assinatura, senão o disposiKvo não reconhecerá o desenvolvedor original da app
keytool -list -keystore debug.keystore Enter keystore password: android Keystore type: JKS Keystore provider: SUN
Your keystore contains 1 entry androiddebugkey, Jan 25, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): 85:DF:2B:E4:F9:AC:16:1D:2F:DE:D3:D6:35:BD:FD:33
26
Suporte para outras linguagens
Em 2009 Google anunciou o Android NaKve Development Kit (NDK)
• Permite desenvolvimento de componentes em C e C++
• Não é completo, pensado mais para ser um complemento ao Java
Google apresenta o Android ScripKng Environment (ASE) – permite o desenvolvimento de apps usando Python e Lua
27
Referência Primordial: Android Developers
http://developer.android.com/