Post on 29-Nov-2014
description
Desenvolvimento AndroidMiguel Fernandes
& Pedro Araújo
Braga Geek Nights11-01-2011
Miguel Fernandes
miguelferna@gmail.comtwitter.com/muldyjob@eurotux.com
Htc Magic Phone @ Froyo 2.2 Cyanogen
Pedro Araújopedromcaraujo@gmail.comtwitter.com/pedromcaraujo
Samsung Galaxy S @ Froyo 2.2 Darky's Rom
ScheduleHistóriaO que é o Android?
Open Handset AlliencePrincipais Características
Being openNot so good
FragmentaçãoFragmanetação de versões
DesenvolvimentoArquitecturaDesenvolvimento de "Apps"Web Apps Versus Native AppsSegurançaSegurança no Market
História
Inicialmente era propriedade de Android, IncComprada pela Google em 2005Desenvolvido pela Google e por membros da Open Handset Alliance (Novembro 2007), para competir com plataformas da Apple, Nokia, Microsoft, etç...Primeira versão pública 1.5 (cupcake) em Abril 2009
1.6 (donut), 2.0/2.1(eclair), 2.2 (froyo)Versão actual 2.3 (Gingerbread) - Nexus SPróxima versão? 3.0 (Honeycomb) - Tablets2.4 (Ice Cream) este verão - por confirmar
O que é o Android?1º sistema operativo móvel aberto e grátisdesenvolvido pelo Open Handset Alliance (http://www.openhandsetalliance.com/)Não é GNU/Linux
não implementa glibcnão tem os utilitários GNU
Kernel Linux 2.6 com alguns melhoramentos especificosalarmashmempower management low memory killer (no swap)logging
Pilha de software composta por: SO, Middleware, core applications
Open Handset Alliance
Latecomers: Asus, Sony, Acer, Huawei
Principais característicasIndependência de fabricante:
Htc, Samsung, Motorola, ... (Nokia?)Google só faz recomendações sobre o HW
Teclado virtual inteligenteHome screen WidgetsGoogle service integration - Google Ecosystem
GmailContactsMapsPicasa
Standard Compliant Browser - WebkitVoice searchMarketSwappable core AppsCloud BasedMulti-tasking
Being OpenSteve Jobs: "Google loves to characterize Android as open and iPhone as closed. We see this disingenuous and clouding the difference(...)"
Not so Good :(
Operadoras Mal comportadasCrapware (uninstalable)MidleMan: Fabricante - Operadora - End UserLatência nos updatesOTA bloatware
Fabricantes Diferênciação de produto - InterfaceHardware de performance/qualidade duvidosa - TabletsCustomização das ROMsLatência nos updates
FragmentaçãoNexus
Fragmentação
HardwareButõesCapacidades gráficasTamanhos de ecrâ
Várias versõesUpdates muito frequentesLatência nos updates
Custom Roms To the Rescue!(?)
Fragmentação de versões
Data collected during two weeks ending on January 4, 2011
Desenvolvimento
HW DriversServiçosLibrariasAplicações
Arquitectura
Desenvolvimento de AppsManaged code: Java
Android NDK - companion tool to the Android SDK that lets you build performance-critical portions of your apps in native C/C++ code.
Before execution, Android applications are converted into the compact Dalvik Executable (.dex) format, which is designed to be suitable for systems that are constrained in terms of memory and processor speed.
Limitações de Mobile HardwareSempre que possível fazer processamento server-sideConectividade nem sempre disponívelConectividade Limitada: 3G Vs Wifi
Web Apps Versus Native AppsNative apps
Prós:Apps tem mais acesso ao dispositivo (ex: sensores)Preferência dos utilizadoresBookmark útilFunções offline
Contras:Se conteúdo igual, é como usar o site...Tem de acrescentar funcionalidade
Web AppsPrós:
Um bom site Mobile serve outros plataformas móveisDesnecessário criação de várias apps para cada telemóvel
Contras:Browser Hell
Segurança
Aplicações assinadasAo Instalar uma aplicação esta fica com um unique Linux User Id (UID)Dados de uma aplicação só estão visíveis à mesmaUtilização de recursos declarativa: AndroidManifest.xml
Aplicação tem de declarar quais os recursos que vai usar em runtimeEsta informação é publicada com a aplicação no Market
Segurança no MarketO utilizador é que verifica as permissões que a aplicação vai usar depois de instalada:
Talker change
Pedro Araújopedromcaraujo@gmail.comtwitter.com/pedromcaraujo
Samsung Galaxy S @ Froyo 2.2 Darky's Rom
Miguel Fernandes
miguelferna@gmail.comtwitter.com/muldyjob@eurotux.com
Htc Magic Phone @ Froyo 2.2 Cyanogen
Getting Started
Google: Android Developers -> SDK
SDK Multiplataforma:
LinuxMacWindows
Precisa de Java JDK 5 ou 6
IDE Opcional ADT Plugin for Eclipse
ExtrasProguard
http://proguard.sourceforge.net/Java class file shrinker, optimizer, obfuscator, and preverifier.Otimização do código
Anthttp://ant.apache.org/Apache Ant is a Java library and command-line tool who's mission is to drive processes described in build files as targets and extension points dependent upon each other.Release/Debug buildsCLI compileContinuous integration
Android Multitasking
Presente desde a primeira versãoCada aplicação tem o seu próprio processoExemplo de utilização
aplicação de mailescolher um email para lerclicar link para browserclicar em link para o Google Maps
Estrutura da app
ActivitiesViewsIntentsBroadcastReceiversWidgets
Views
LinearLayoutTableLayoutTextViewButtonCheckBoxEditText GLSurfaceViewScrollView
Layouts
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /></LinearLayout>
DEMO!!
Curiosidades
Language files blank comment code--------------------------------------------------------------------------------XML 4130 26919 62996 3044624C 7191 494387 685731 2826741Java 16473 423278 986294 2084883C++ 5623 349754 385625 1754053C/C++ Header 12278 300773 653608 1153456HTML 2325 13539 14681 348935Bourne Shell 501 45684 46947 317410Javascript 1717 41901 76306 208012Assembly 1704 18732 51392 96700D 2181 16936 24 59142m4 116 6026 1813 49502Perl 221 8189 8246 40058Python 236 9805 14225 38852make 381 6844 3837 37059IDL 421 3128 0 24181Objective C 93 2804 3371 10032--------------------------------------------------------------------------------SUM: 56048 1776761 3001984 12141638--------------------------------------------------------------------------------http://www.gubatron.com/blog/2010/05/23/how-many-lines-of-code-does-it-take-to-create-the-android-os/
Perguntas
Android is all about choice!!