Descrição geral do Android (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
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 2.2 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% 4.4 KitKat 19 2.5% 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++) 3
Arquitetura do Androide 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 5
Máquina Virtual Dalvik Java source.java Java Compiler javac... Java source.java Java Compiler javac Java archive.jar Java byte code.class... Java byte code.class stack machine JVM Resources.xml.xml Dex Compiler dx Dalvik byte code.dex Android Manifest.xml Application package.apk regiter machine Dalvik 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 7
Componentes de uma aplicação App A aplicação não é uma classe com um método main(). A S P R 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: Atividades - classe derivada de Activity A É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 S Operações demoradas executadas em segundo plano Exemplo: Reproduzir uma música Fornecedores de conteúdos - derivada de ContentProvider P 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 R Captura as notificações originadas pelo sistema ou outras aplicações Exemplo de notificação: Bateria fraca 8
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> 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; 10