3. Schedule
História
O que é o Android?
Open Handset Allience
Principais Características
Being open
Not so good
Fragmentação
Fragmanetação de versões
Desenvolvimento
Arquitectura
Desenvolvimento de "Apps"
Web Apps Versus Native Apps
Segurança
Segurança no Market
4. História
Inicialmente era propriedade de Android, Inc
Comprada pela Google em 2005
Desenvolvido 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 S
Próxima versão? 3.0 (Honeycomb) - Tablets
2.4 (Ice Cream) este verão - por confirmar
5. O que é o Android?
1º sistema operativo móvel aberto e grátis
desenvolvido pelo Open Handset Alliance (http://www.
openhandsetalliance.com/)
Não é GNU/Linux
não implementa glibc
não tem os utilitários GNU
Kernel Linux 2.6 com alguns melhoramentos especificos
alarm
ashmem
power management
low memory killer (no swap)
logging
Pilha de software composta por:
SO, Middleware, core applications
7. Principais características
Independência de fabricante:
Htc, Samsung, Motorola, ... (Nokia?)
Google só faz recomendações sobre o HW
Teclado virtual inteligente
Home screen Widgets
Google service integration - Google Ecosystem
Gmail
Contacts
Maps
Picasa
Standard Compliant Browser - Webkit
Voice search
Market
Swappable core Apps
Cloud Based
Multi-tasking
8. Being Open
Steve Jobs: "Google loves to characterize Android as open and
iPhone as closed. We see this disingenuous and clouding the
difference(...)"
9. Not so Good :(
Operadoras Mal comportadas
Crapware (uninstalable)
MidleMan: Fabricante - Operadora - End User
Latência nos updates
OTA bloatware
Fabricantes
Diferênciação de produto - Interface
Hardware de performance/qualidade duvidosa - Tablets
Customização das ROMs
Latência nos updates
Nexus
Fragmentação
10. Fragmentação
Hardware
Butões
Capacidades gráficas
Tamanhos de ecrâ
Várias versões
Updates muito frequentes
Latência nos updates
Custom Roms To the Rescue!(?)
14. Desenvolvimento de Apps
Managed 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 Hardware
Sempre que possível fazer processamento server-side
Conectividade nem sempre disponível
Conectividade Limitada: 3G Vs Wifi
15. Web Apps Versus Native Apps
Native apps
Prós:
Apps tem mais acesso ao dispositivo (ex: sensores)
Preferência dos utilizadores
Bookmark útil
Funções offline
Contras:
Se conteúdo igual, é como usar o site...
Tem de acrescentar funcionalidade
Web Apps
Prós:
Um bom site Mobile serve outros plataformas móveis
Desnecessário criação de várias apps para cada
telemóvel
Contras:
Browser Hell
16. Segurança
Aplicações assinadas
Ao Instalar uma aplicação esta fica com um unique Linux
User Id (UID)
Dados de uma aplicação só estão visíveis à mesma
Utilização de recursos declarativa: AndroidManifest.xml
Aplicação tem de declarar quais os recursos que vai
usar em runtime
Esta informação é publicada com a aplicação no Market
17. Segurança no Market
O utilizador é que verifica as permissões que a aplicação vai
usar depois de instalada:
20. Getting Started
Google: Android Developers -> SDK
SDK
Multiplataforma:
Linux
Mac
Windows
Precisa de Java JDK 5 ou 6
IDE Opcional
ADT Plugin for Eclipse
21. Extras
Proguard
http://proguard.sourceforge.net/
Java class file shrinker, optimizer, obfuscator, and
preverifier.
Otimização do código
Ant
http://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 builds
CLI compile
Continuous integration
22. Android Multitasking
Presente desde a primeira versão
Cada aplicação tem o seu próprio processo
Exemplo de utilização
aplicação de mail
escolher um email para ler
clicar link para browser
clicar em link para o Google Maps
23. Estrutura da app
Activities
Views
Intents
BroadcastReceivers
Widgets
24. Views Layouts
<LinearLayout
android:layout_width="fill_parent"
LinearLayout android:layout_height="fill_parent"
TableLayout android:orientation="vertical" >
<TextView android:id="@+id/text"
TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
Button android:text="Hello, I am a TextView" />
CheckBox <Button android:id="@+id/button"
android:layout_width="wrap_content"
EditText android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
GLSurfaceView </LinearLayout>
ScrollView