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

Introdução à Programação para Android - Semcomp17

Introdução à Programação para Android - Semcomp17

Slides do minicurso de Android que aconteceu durante a XVII edição da Semana da Computação no ICMC/USP.

Ubiratan Soares

August 19, 2014
Tweet

More Decks by Ubiratan Soares

Other Decks in Programming

Transcript

  1. SOBRE MIM Computeiro by ICMC-USP Engenheiro de Software Instrutor na

    Globalcode Intel Software Innovator para Android Palestrante nos Eventos de Tecnologia Freelancer, Consultor e ETC
  2. AGENDA Visão Geral sobre a plataforma Android Ambiente de Desenvolvimento

    Entendendo o Básico Demo #01 Demo #02 Conclusão
  3. ANDROID E FATOS Sistema Operacional Móvel dominante no mercado Distribuição

    Linux mais bem sucedida da história Mais de um bilhão de aparelhos ativados Bilhões de downloads de aplicações via Google Play Avanços realmente significativos no campo da IoT
  4. ESTATÍSTICAS VERSION DISTRIBUITION Froyo 0.7% Gingerbread 13.6% ICS 10.6% JellyBean

    4.1 26.5% JellyBean 4.2 19.8% JellyBean 4.3 7.9% KitKat 20.9% Agosto 2014
  5. 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, GDK 19 Kit Kat ? 20 L
  6. COMPOSIÇÃO DO SISTEMA Android é uma distribuição Linux com uma

    pilha específica de software Essa pilha de software é formada : Por diversos subsistemas desenvolvidos pelo próprio Google para o Android Por diversos projetos de código-aberto amplamente adotados pela indústria Eventualmente por componentes fechados (drivers), dependendo da combinação de versão do sistema e aparelho-alvo
  7. LINUX KERNEL DRIVERS (USB, Bluetooth, Sensors, etc) Power Management Process

    Management Networking IPC ANDROID LIBRARIES DALVIK / ART ANDROID RUNTIME 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
  8. 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
  9. ANDROID RUNTIME O ambiente de execução do Android não é

    uma JVM à risca (como Oracle Hotspot ou Azul Zing) Em sua primeira versão, DalvikVM foi o ambiente de execução construído com vistas à boa interoperabilidade com o SO Dalvik executa um bytecode específico, diferente do bytecode Java tradicional A partir do Android L, o ART será o ambiente de execução padrão
  10. 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
  11. O PAPEL DO FRAMEWORK YOUR APP HERE! Android Framework Runtime

    Native Libraries Linux Kernel SoC Hardware Core JDK 1.7 Android APIs OSS Extras (HTTP, JSON, etc)
  12. 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) Todas as novas funcionalidades são oferecidas primeiramente (e potencialmente apenas) no Android Studio
  13. Estrutura de Pacotes Java (app/java/*) Recursos Estáticos (app/res/*) Arquivos globais

    relacionados à Build Arquivo de Build do módulo app Primeiro módulo funcional existente na aplicação
  14. GRADLE Build System de propósito geral, multistack, construído em Groovy/Java

    Adotado como padrão para o Android desde 2013 Oferece recursos avançados e soluções elegantes para problemas comuns enfrentados em grandes projetos
  15. ANDROID MANIFEST Documentação pública da aplicação Interface declarativa para leitores

    de interesse, como o próprio sistema operacional, lojas online (Google Play, Amazon Store, AppBrain, etc) e outros Declarações sobre a estrutura da aplicação e seus componentes, permissões pedidas em tempo de instalação, funcionalidades exigidas (ex, OpenGL), dentre outros
  16. 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
  17. MAIS SOBRE ACTIVITY Objeto com instância criada e controlada pelo

    Runtime Possui um ciclo de vida bem definido, de acordo com os eventos de interação do usuário (máquina de estados) Como programador, você não possui controle de 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
  18. O ARQUIVO R Mecanismo de “cola" entre os recursos da

    aplicação (estáticos) e o ambiente de execução (dinâmico) Pré-processador existente no SDK (AAPT) cria uma classe Java, formada por referências que indexam todos os recursos da aplicação Cada recurso é mapeado por uma constante inteira No código Java, recursos são acessados por suas referências!
  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 Repare que uma referência em R.java pode equivaler a mais de um recurso disponível !!!!
  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 (layout), que serão convertidos em Views em tempo de execução A abordagem dinâmica pressupõe que as Views são construídas em tempo de execução, programaticamente
  21. LAYOUTS E WIDGETS Diversas implementações de Views e Views Groups

    disponíveis na API do Android (ou biblioteca de suporte) 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 entre

    aplicações 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 outra aplicação para compartilhar algum conteúdo de interesse, como uma URL, 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)
  25. VIEWS ADAPTADORAS Componentes comuns em qualquer aplicação Listview, GridView, Spinner

    (e outros …) Controlam dinamicamente o reuso de Views, de modo a economizar memória
  26. PROCEDIMENTO GERAL Estender de BaseAdapter, ou mesmo de ArrayAdapter Na

    implementação da subclasse, adicionar o comportamento adaptador sobreescrevendo o método getView( ) (e outros quando necessário) Otimizar reusando convertView e implementando o padrão viewHolder
  27. CURSOS ONLINE GRATUITOS Programming Mobile Applications for Android Handheld Systems

    https://www.coursera.org/course/android Developing Android Apps : Android Fundamentals https://www.udacity.com/course/ud853
  28. MATERIAL DE REFERÊNCIA Android Trainning by Google http://developer.android.com/training The CodePath

    for Android https://github.com/thecodepath/android_guides/wiki Documentação Oficial http://developer.android.com