Pro Yearly is on sale from $80 to $50! »

Programando para Android

Programando para Android

Slides de introdução ao desenvolvimento de aplicações para Android.

D4b7a3e2ed10f86e0b52498713ba2601?s=128

Ubiratan Soares

February 05, 2015
Tweet

Transcript

  1. PROGRAMANDO PARA ANDROID Uma Introdução Prática

  2. Ubiratan Soares Computeiro by ICMC / USP Instrutor e Palestrante

    Intel Software Innovator Google Developer Expert GDG-SP Leader
  3. MOTIVAÇÃO

  4. ALGUNS FATOS Android é o SO dominante no mercado de

    dispositivos móveis Distribuição Linux mais bem sucedida da história Vendas na casa de bilhões de dispositivos Bilhões de downloads de aplicações via Google Play Avanços realmente significativos no campo de IoT
  5. SABORES DO SISTEMA VERSION DISTRIBUITION Froyo 0.4% Gingerbread 7.8% ICS

    6.7% JellyBean 4.1 19.2% JellyBean 4.2 20.3% JellyBean 4.3 6.5% KitKat 39.1% Janeiro de 2015 39% 46% 7% 8% 0%
  6. COMPOSIÇÃO DO SISTEMA Distribuição Linux com uma pilha específica de

    software : Subsistemas desenvolvidos pelo próprio Google para o Android Diversos projetos de código-aberto amplamente adotados pela indústria Componentes proprietários, dependendo da combinação de versão do sistema e aparelho-alvo / fabricantes Aplicações pré-embarcadas, de código aberto (AOSP) ou fechado (GMS)
  7. LINUX KERNEL DRIVERS (USB, Bluetooth, Sensors, etc) Power Management Process

    Management Networking IPC NATIVE LIBRARIES Graphics (OpenGL ES, FreeType, etc) libc Webkit SSL SQLite Media Framework Surface Manager ANDROID FRAMEWORK ACTIVITY MANAGER WINDOW MANAGER TELEPHONY NOTIFICATIONS VIEWS SYSTEM LOCATION MANAGER PACKAGE MANAGER RESOURCES MANAGER ANDROID LIBRARIES DALVIK / ART ANDROID RUNTIME
  8. APPLICATION SANDBOXING LINUX PROCESS Android Application RESOURCES DEX EXECUTABLE ANDROID

    RUNTIME GID UID PID SQLITE PREFS FILES
  9. SANDBOXING A princípio, cada aplicação em seu processo Linux Outras

    aplicações não tem conhecimento ou acesso aos seus dados (a menos que compartilhados) Aplicações precisam de permissão do usuário para interagir com recursos específicos do sistema, acessar recursos de outras aplicações ou do hardware, dentre outros
  10. ANDROID RUNTIME O ambiente de execução do Android não é

    uma JVM à risca Dalvik/ART foram desenhados com vistas à boa interoperabilidade com o SO e necessidades dos apps Dalvik/ART executa um bytecode específico, gerado a partir do bytecode Java tradicional A partir do Android Lollipop, o ART é o ambiente de execução padrão
  11. DEXING PROCESS App.java App.class JVM Java Bytecode javac DALVIK /

    ART Dalvik Bytecode App.dex dex compiler
  12. BOOT PROCESS LINUX KERNEL INIT RUNTIME Google Maps HEAP +

    LIVE CODE ZYGOTE SHARED PRE-LOADED RUNTIME ZYGOTE fork() fork() fork() RUNTIME GMail HEAP + LIVE CODE ZYGOTE SHARED RUNTIME Your App Here !!! HEAP + LIVE CODE ZYGOTE SHARED
  13. ANDROID FRAMEWORK YOUR APP HERE! Android Framework Runtime Native Libraries

    Linux Kernel SoC Hardware Core JDK 1.7 Android APIs OSS Extras •200 pacotes •5.000 classes •40.000 métodos
  14. VERSÕES E NÍVEIS DE API VERSION API LEVEL NICKNAME 1.5

    3 Cupcake 1.6 4 Donut 2.0 , 2.0.1, 2.1 5, 6, 7 Eclair 2.2 8 Froyo 2.3.x 9, 10 Gingerbread 3.x.y 11, 12, 13 Honeycomb 4.0.x 14, 15 Ice Cream Sandwich 4.1.x 16 Jelly Bean 4.2.x 17 Jelly Bean 4.3.x 18 Jelly Bean 4.4.x, 4.4w 19, 20 Kit Kat 5.0 21 Lollipop
  15. AMBIENTE DE DESENVOLVIMENTO

  16. ANDROID STUDIO Nova solução para desenvolvimento de aplicações Android, anunciada

    pelo Google em 2013 (Google IO) Aposenta o paradigma anterior de desenvolvimento, baseado em Eclipse, ADT Plugin e ANT Combina as capacidades de uma IDE já consolidada (IntellijIDEA) com uma novo sistema para construir as aplicações (Gradle)
  17. None
  18. ANDROID SDK Conjunto de ferramentas criadas para possibilitar o trabalho

    do desenvolvedor Primeira instalação do Android Studio irá oferecer assistente para fazer download e/ou configurar o SDK Ferramentas mais importantes estão integradas com o Android Studio É interessante deixar diretórios no path do seu shell preferido!
  19. ALGUMAS FERRAMENTAS /android-sdk/tools /android-sdk/platform-tools SDK MANAGER AVD MANAGER EMULATOR LINT

    TRACEVIEW HIERARCHYVIEWER … ADB FASTBOOT SQLITE3 SYSTRACE …
  20. None
  21. None
  22. GRADLE Build System de propósito geral, construído em Groovy/Java Adotado

    como padrão para o Android desde 2013 Oferece recursos avançados e soluções poderosas para problemas comuns enfrentados em grandes projetos É integrado como ferramenta externa ao Android Studio
  23. ESTRUTURA DE UM PROJETO

  24. Estrutura de pacotes Java (app/java/*) Recursos Estáticos (app/res/*) Arquivos globais

    relacionados a build Arquivo de build do módulo app Primeiro módulo funcional da aplicação Android Manifest
  25. ANDROID MANIFEST Documentação pública da aplicação Interface declarativa para leitores

    de interesse, como o próprio sistema operacional, lojas e outros Declarações sobre a estrutura da aplicação e seus componentes, permissões pedidas em tempo de instalação, funcionalidades exigidas, dentre outros
  26. O ARQUIVO R Mecanismo de “cola" entre os recursos da

    aplicação (estáticos) e o código em execução (dinâmico) Pré-processador cria uma classe Java, formada por referências categorizadas para os recursos da aplicação Cada recurso é mapeado por uma constante inteira No código Java, recursos são acessados por suas referências!
  27. INTRODUZINDO O FRAMEWORK

  28. BUILDING BLOCKS ACTIVITY SERVICE BROADCAST RECEIVER CONTENT PROVIDERS INTENT

  29. ACTIVITY "Representa a tela” Tem a responsababilidade de gerenciar a

    interface de usuário e os eventos passíveis originados do SO aos quais a tela está sujeita Pode ser entendida como um CONTROLLER para a VIEWS com as quais o usuário interage, segundo o padrão MVC
  30. MAIS SOBRE ACTIVITY Objeto com instância criada e controlada pelo

    runtime Possui um ciclo de vida bem definido, de acordo com os eventos da tela Como programador, você não possui controle sobre qual estado uma Activity se encontra; mas você pode ser avisado das transições de interesse https://developer.android.com/reference/android/app/Activity.html
  31. None
  32. APPLICATION RESOURCES Recursos da aplicação previamente disponíveis são acessados pelo

    sistema gerenciador de recursos do Android Extremamente poderoso e flexível, baseado em qualificadores e convenções Android determina em o recurso correto a ser utilizado em tempo de execução
  33. INTERFACES GRÁFICAS Android oferece duas abordagens para a construção de

    UI : estática e dinâmica A abordagem estática usa templates previamente construídos em arquivos XML, que serão convertidos em views em tempo de execução Na abordagem dinâmica, os parâmetros de uma view são fornecidos programaticamente
  34. HIERARQUIA DE VIEWS VIEW GROUP VIEW GROUP VIEW GROUP VIEW

    VIEW VIEW
  35. LAYOUTS E WIDGETS Diversas implementações de Views e Views Groups

    disponíveis na API do Android Definem a View de interesse em relação aos seus atributos e comportamentos Exemplos de ViewGroup : LinearLayout, RelativeLayout, ListView, e outros Exemplos de View simples : Button, TextView, ImageView e outros
  36. INTENTS Abstração de mensagens, utilizada para ativação entre componentes, não

    necessariamente na mesma aplicação Podem ser explícitos ou implícitos Para um Intent Explícito, a própria mensagem contém a informação de qual componente é o alvo Para um Intent Implícito, Android irá determinar em tempo de execução quais componentes estão aptos a responder a mensagem
  37. DOIS CASOS TÍPICOS Dentro da nossa aplicação, utilizamos Intents para

    trocar de tela, pedindo para o Android iniciar uma nova Activity,através de um Intent Explícito Utilizamos os recursos de outra aplicação para compartilhar algum conteúdo de interesse, como uma URL ou arquivo, através de um Intent Implícito
  38. NAVEGAÇÃO E BACKSTACK ACTIVITY #02 ACTIVITY #03 ACTIVITY #01

  39. BACKSTACK ACTIVITY #01 BACKSTACK ACTIVITY #02 ACTIVITY #01 BACKSTACK ACTIVITY

    #03 ACTIVITY #01 ACTIVITY #02 ACTIVITY #02 BACKSTACK ACTIVITY #01 startActivity(intentA) onBackPressed( ) startActivity(intentB)
  40. DEMO

  41. CONTATOS ubiratan.f.soares@gmail.com @ubiratanfsoares google.com/+UbiratanSoares ubiratansoares.github.io

  42. OBRIGADO