Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Programando para Android

Programando para Android

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

Ubiratan Soares

February 05, 2015
Tweet

More Decks by Ubiratan Soares

Other Decks in Programming

Transcript

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

    Intel Software Innovator Google Developer Expert GDG-SP Leader
  2. 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
  3. 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%
  4. 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)
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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)
  12. 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!
  13. 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
  14. 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
  15. 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
  16. 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!
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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)