Desenvolvimento para Android
Aula 1
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.
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.
Smartphones
HTC G1, Droid, TaYoo
Motorola Droid (X)
Suno S880 Samsung Galaxy
Tablets
Velocity Micro Cruz
Gome FlyTouch Acer beTouch
Dawa D7 Toshiba Android SmartBook Cisco Android Tablet Samsung Galaxy Tab
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_Sub scriber_Market_Share
Market share: versões do Android
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)
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
Arquitetura do Android
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.
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.
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
Arquitetura: Bibliotecas
Estão incluas uma série de bibliotecas C/C++ que são usadas por vários componentes do sistema Android.
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
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.
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
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.
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
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
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
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
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,
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