Slides - Thoth

Propaganda
Descrição geral do Android
Programação Orientada por Objetos (POO)
Centro de Cálculo
Instituto Superior de Engenharia de Lisboa
Pedro Alexandre Pereira ([email protected])
Versões & API
• A versão 1.0 foi lançada em Fevereiro de 2009 (API 2)
• Cada versão tem novas características:
– Para o programador (mantendo compatibilidade)
– Para o utilizador
Versão
Codename
nível da API
Distribuição
Froyo
8
1.2%
2.3.0 – 2.3.7
Gingerbread
9..10
19.0%
3.0 – 3.2
Honeycomb
11..13
0.1%
4.0.0 – 4.0.3
Ice Cream
Sandwich
14..15
15.2%
4.1 – 4.3
Jelly Bean
16..18
62.0%
KitKat
19
2.5%
2.2
4.4
CCISEL, 2014
Programação Orientada por Objetos
2
O Android é …
Stack de software para dispositivos móveis
• Aplicações essenciais (Java):
– Home; Phone; Contacts; Browser; …
• Application Framework (Java):
– Gestão dos componentes das aplicações
• Runtime (Java & C):
– Máquina virtual Java (Dalvik) ; Bibliteca geral (Java)
• Biblioteca (C/C++):
– Gráficos; Base de Dados; Biblioteca de C; Áudio; Vídeo; Imagens; …
• Sistema Operativo (Kernel Linux):
– Mecanismo de segurança; Gestão memoria; Gestão de processos;
Stack de Rede; Gestão de alimentação; Drivers…
• Ambiente de desenvolvimento (Windows; MacOS; Linux)
– SDK (Aplicações - Java) ; NDK (Componentes críticos - C/C++)
CCISEL, 2014
Programação Orientada por Objetos
3
Arquitetura do Androide
CCISEL, 2014
Programação Orientada por Objetos
4
Dalvik
• Dalvik é o nome duma vila na Islândia
• MV baseada em registos (em vez de stack)
– Menos instruções geradas
• O código Java depois de compilado é recompilado para a MV Dalvik
– Um só ficheiro dex com todo o código da aplicação
• A biblioteca Java é baseada na Platform Standard Edition
– Hierarquias de classes Swing e AWT substituídas por Views
– Acrescentadas novas funcionalidades
CCISEL, 2014
Programação Orientada por Objetos
5
Máquina Virtual Dalvik
Java source
.java
...
Java source
.java
Java
Compiler
Java
Compiler
javac
javac
Java archive
Java byte code
.jar
.class
...
Java byte code
.class
Dex
Compiler
stack machine
dx
JVM
Resources
Resources
.xml
.xml
Dalvik byte code
.dex
Android Manifest
.xml
Application package
.apk
regiter machine
Dalvik
CCISEL, 2014
Programação Orientada por Objetos
6
Aplicação para Android
• As aplicações são desenvolvidas em Java
– Usando as ferramentas tradicionais de Java
• O código e os recursos de cada aplicação são empacotados num
ficheiro, com extensão .apk
– Usando o utilitário (android) do SDK
• A aplicação é instalada no dispositivo a partir do ficheiro .apk
• A aplicação pode ser testada no SDK num dispositivo virtual
– Usando o emulador para Android Virtual Device (AVD)
• Para cada aplicação é criado um utilizador Linux (user ID) e só esse
tem acesso a todos os recursos (ficheiros) da aplicação
• Cada aplicação é executada no seu próprio processo Linux com a
sua própria instância da máquina virtual Dalvik
CCISEL, 2014
Programação Orientada por Objetos
7
Componentes de uma aplicação
App
A
S
P
A aplicação não é uma classe com um método main().
A aplicação é constituída por componentes que interagem com o sistema.
Cada tipo de componente tem objectivos específicos e ciclos de vida distintos:
•
A
•
S
•
P
•
R
Atividades
- classe derivada de Activity
– Écrans de interacção com o utilizador. Uma delas é lançada no arranque da
aplicação (LAUNCHER).
– Exemplo: Edição de SMS
Serviços
- classe derivada de Service
– Operações demoradas executadas em segundo plano
– Exemplo: Reproduzir uma música
Fornecedores de conteúdos - derivada de ContentProvider
– Gestor da informação partilhada que reside em qualquer fonte de dados
– Exemplo de conteúdo: Lista de contactos
Receptores de notificações
- derivada de BroadcastReceiver
– Captura as notificações originadas pelo sistema ou outras aplicações
– Exemplo de notificação: Bateria fraca
CCISEL, 2014
Programação Orientada por Objetos
8
R
Manifesto da aplicação
Cada aplicação tem um ficheiro (AndroidManifest.xml) que
descreve as suas características:
Os seus componentes;
Nível mínimo da API suportada;
Recursos de hardware e software necessita;
etc.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hello" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application>
<activity
android:name="FirstAppActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
... <sevice> ... <receiver> ... <provider> ...
<supports-screens android:anyDensity="true"/>
</application>
</manifest>
CCISEL, 2014
Programação Orientada por Objetos
9
Recursos da aplicação
As aplicações têm vários tipos de recursos:
- Disposição de écrans; Tabelas de strings; Menus; Imagens
Normalmente, descritos em XML
- xmlns:android="http://schemas.android.com/apk/res/android"
Podem ser especializados para várias dimensões de écran e línguas
- res/layout/main.xml & res/layout-port/main.xml
- res/values/strings.xml & res/values-pt/strings.xml
Os recursos e os elementos dos recursos podem ter um ID único (int)
que pode ser gerado automaticamente pelo SDK
- R.string.app_name = 0x7f040001;
CCISEL, 2014
Programação Orientada por Objetos
10
Download