SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Desenvolvimento Android
   Miguel Fernandes
           &
     Pedro Araújo

      Braga Geek Nights
         11-01-2011
Miguel Fernandes
miguelferna@gmail.com
twitter.com/muldy
job@eurotux.com
                    Htc Magic Phone @ Froyo 2.2 Cyanogen

Pedro Araújo
pedromcaraujo@gmail.com
twitter.com/pedromcaraujo
                  Samsung Galaxy S @ Froyo 2.2 Darky's Rom
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
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
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
Open Handset Alliance




Latecomers: Asus, Sony, Acer, Huawei
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
Being Open
Steve 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 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
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!(?)
Fragmentação de versões




      Data collected during two weeks ending on January 4, 2011
Desenvolvimento

 HW Drivers
 Serviços
 Librarias
 Aplicações
Arquitectura
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
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
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
Segurança no Market
 O utilizador é que verifica as permissões que a aplicação vai
 usar depois de instalada:
Talker change
Pedro Araújo
pedromcaraujo@gmail.com
twitter.com/pedromcaraujo
                  Samsung Galaxy S @ Froyo 2.2 Darky's Rom

Miguel Fernandes
miguelferna@gmail.com
twitter.com/muldy
job@eurotux.com
                    Htc Magic Phone @ Froyo 2.2 Cyanogen
Getting Started

Google: Android Developers -> SDK

  SDK
    Multiplataforma:
       Linux
       Mac
       Windows
     Precisa de Java JDK 5 ou 6

  IDE Opcional
     ADT Plugin for Eclipse
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
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
Estrutura da app

  Activities
  Views
  Intents
  BroadcastReceivers
  Widgets
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
DEMO!!
Curiosidades
Language                     files       blank        comment            code
--------------------------------------------------------------------------------
XML                         4130          26919         62996         3044624
C                        7191        494387          685731         2826741
Java                     16473         423278          986294         2084883
C++                       5623         349754          385625         1754053
C/C++ Header                    12278        300773          653608         1153456
HTML                         2325          13539          14681         348935
Bourne Shell                    501        45684          46947         317410
Javascript                  1717          41901          76306         208012
Assembly                      1704         18732          51392          96700
D                        2181         16936             24        59142
m4                        116          6026          1813          49502
Perl                      221          8189          8246         40058
Python                      236          9805         14225          38852
make                        381         6844           3837         37059
IDL                        421          3128            0        24181
Objective 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!!

Mais conteúdo relacionado

Mais procurados

Programando Android - Aula 1
Programando Android - Aula 1Programando Android - Aula 1
Programando Android - Aula 1Kalil Maciel
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisÉdipo Souza
 
Programando Android - Aula 2
Programando Android - Aula 2Programando Android - Aula 2
Programando Android - Aula 2Kalil Maciel
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 
Seminário SD - Ambiente de Desenvolvimento para Android
Seminário SD - Ambiente de Desenvolvimento para AndroidSeminário SD - Ambiente de Desenvolvimento para Android
Seminário SD - Ambiente de Desenvolvimento para AndroidWilliam Higino
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para AndroidClaudio Pereira
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 

Mais procurados (13)

Programando Android - Aula 1
Programando Android - Aula 1Programando Android - Aula 1
Programando Android - Aula 1
 
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias DigitaisApresentação de minha Monografia do curso de Sistema e Mídias Digitais
Apresentação de minha Monografia do curso de Sistema e Mídias Digitais
 
Programando Android - Aula 2
Programando Android - Aula 2Programando Android - Aula 2
Programando Android - Aula 2
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 
Seminário SD - Ambiente de Desenvolvimento para Android
Seminário SD - Ambiente de Desenvolvimento para AndroidSeminário SD - Ambiente de Desenvolvimento para Android
Seminário SD - Ambiente de Desenvolvimento para Android
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Android FREETEC
Android FREETECAndroid FREETEC
Android FREETEC
 
Android
Android Android
Android
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
Android Lollipop + Android Wear
Android Lollipop + Android WearAndroid Lollipop + Android Wear
Android Lollipop + Android Wear
 

Semelhante a Desenvolvimento Android em Braga

Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelCampus Party Brasil
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CERonildo Oliveira
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao androidPaulo Remoli
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo OliveiraRonildo Oliveira
 
Palestra sobre Android - Faculdade Hélio Rocha
Palestra sobre Android  - Faculdade Hélio RochaPalestra sobre Android  - Faculdade Hélio Rocha
Palestra sobre Android - Faculdade Hélio RochaUbiracy Santos
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...Adriel Café
 
Android Palestra
Android PalestraAndroid Palestra
Android PalestraRenato
 
Desenvolvendo Soluções com Android
Desenvolvendo Soluções com AndroidDesenvolvendo Soluções com Android
Desenvolvendo Soluções com Androidjgbirk
 
Mobile Linux com Google Android
Mobile Linux com Google AndroidMobile Linux com Google Android
Mobile Linux com Google Androidfelipebzr
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapMayron Cachina
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rqKMILT
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem FioDouglas Frari
 

Semelhante a Desenvolvimento Android em Braga (20)

Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro Inevitável
 
Phonegap
PhonegapPhonegap
Phonegap
 
Android
AndroidAndroid
Android
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CE
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao android
 
Phonegap
PhonegapPhonegap
Phonegap
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo Oliveira
 
Palestra sobre Android - Faculdade Hélio Rocha
Palestra sobre Android  - Faculdade Hélio RochaPalestra sobre Android  - Faculdade Hélio Rocha
Palestra sobre Android - Faculdade Hélio Rocha
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
 
Android Palestra
Android PalestraAndroid Palestra
Android Palestra
 
Desenvolvendo Soluções com Android
Desenvolvendo Soluções com AndroidDesenvolvendo Soluções com Android
Desenvolvendo Soluções com Android
 
Mobile Linux com Google Android
Mobile Linux com Google AndroidMobile Linux com Google Android
Mobile Linux com Google Android
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rq
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem Fio
 

Desenvolvimento Android em Braga

  • 1. Desenvolvimento Android Miguel Fernandes & Pedro Araújo Braga Geek Nights 11-01-2011
  • 2. Miguel Fernandes miguelferna@gmail.com twitter.com/muldy job@eurotux.com Htc Magic Phone @ Froyo 2.2 Cyanogen Pedro Araújo pedromcaraujo@gmail.com twitter.com/pedromcaraujo Samsung Galaxy S @ Froyo 2.2 Darky's Rom
  • 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
  • 6. Open Handset Alliance Latecomers: Asus, Sony, Acer, Huawei
  • 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!(?)
  • 11. Fragmentação de versões Data collected during two weeks ending on January 4, 2011
  • 12. Desenvolvimento HW Drivers Serviços Librarias Aplicações
  • 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:
  • 19. Pedro Araújo pedromcaraujo@gmail.com twitter.com/pedromcaraujo Samsung Galaxy S @ Froyo 2.2 Darky's Rom Miguel Fernandes miguelferna@gmail.com twitter.com/muldy job@eurotux.com Htc Magic Phone @ Froyo 2.2 Cyanogen
  • 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
  • 26. Curiosidades Language files blank comment code -------------------------------------------------------------------------------- XML 4130 26919 62996 3044624 C 7191 494387 685731 2826741 Java 16473 423278 986294 2084883 C++ 5623 349754 385625 1754053 C/C++ Header 12278 300773 653608 1153456 HTML 2325 13539 14681 348935 Bourne Shell 501 45684 46947 317410 Javascript 1717 41901 76306 208012 Assembly 1704 18732 51392 96700 D 2181 16936 24 59142 m4 116 6026 1813 49502 Perl 221 8189 8246 40058 Python 236 9805 14225 38852 make 381 6844 3837 37059 IDL 421 3128 0 24181 Objective 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/
  • 27. Perguntas Android is all about choice!!