Android Training Program - Portugal, Aula 0

Android Training Program - Portugal, Aula 0

Aula #0: Pronto para começar 🎒

Bem-vindos! Esta primeira aula é de suporte. Vamos-te ensinar a instalar o Android Studio, a configurar o emulador e/ ou o teu telemóvel Android, e ainda a instalares a tua primeira aplicação de forma a garantir que tens tudo pronto para começar.

- Instalar o Android Studio
- Configurar o Emulador
- Criar a tua primeira aplicação

9e9eb825c69d719f2d3c32bdd3bc971e?s=128

ATP Portugal

October 14, 2020
Tweet

Transcript

  1. Android Training Program PORTUGAL Aula #0 Pronto para começar

  2. • Sejam excelentes uns para os outros • Fale mais

    alto se vir ou ouvir alguma coisa • O assédio não é tolerado • Pratique "Sim e" um ao outro Código de conduta Mais informações: http://bit.ly/2IhF0l3
  3. Olá Mundo!

  4. Log.d(“Olá Mundo ”)

  5. • Apresentação do programa • Introdução ao Git/GitHub • Introdução

    ao Kotlin • Android Studio • Cria a tua aplicação Sumário Photo by Mika Baumeister on Unsplash
  6. Andres-Leonardo Martinez-Ortiz Google Carlos Mota Formador Renato Almeida Formador @davilagrau

    @cafonsomota @tallnato Equipa
  7. • 14 eventos • 11 cidades • 11 instituições •

    3267 participantes Edições anteriores
  8. None
  9. Apresentação do programa

  10. • Aprender Android desde os conceitos mais simples aos mais

    avançados: ◦ Android Jetpack ◦ Firebase ◦ TensorFlow Lite ◦ ML Kit • Todo o código será escrito em Kotlin • Desenvolvimento de uma aplicação Android de raiz • Recorrendo às últimas novidades: ◦ Android 11 ◦ Jetpack Compose Desenhado para o Android 11! Apresentação do programa
  11. • Adicionalmente teremos ainda uma breve introdução ao Flutter •

    Suporte contínuo durante todo o programa • Complemento às aulas dadas nas diferentes instituições de ensino • Grátis Apresentação do programa
  12. • 12 aulas • 1h30 cada aula • ~1 aula

    por semana • 14 Outubro a 16 Dezembro • YouTube live • Suporte assíncrono contínuo via Discord/email • Todo o código disponível no GitHub Photo by Arif Riyanto on Unspla Apresentação do programa
  13. #0 14 de Outubro Pronto para começar #1 21 de

    Outubro Bem-vindos ao Android #2 28 de Outubro Fundações I #3 04 de Novembro Fundações II #4 11 de Novembro Fundações III #5 18 de Novembro Listas, listas e mais listas #6 25 de Novembro Jetpack, Jetpack, Jetpack! #7 - #8 02 - 03 de Dezembro Firebase #9 - #10 09 - 10 de Dezembro MLKit & TensorFlow #11 16 de Dezembro Resumo Semana Semana Calendário
  14. • [05 mins] Apresentação do curso, resumo da sessão anterior

    e da atual • [30 mins] Conteúdo da aula • [15 mins] Formador convidado: parceiro, Googler, GDE, etc. • [30 mins] Continuação do conteúdo da aula • [10 mins] Q&A • [05 mins] Resumo Aulas
  15. http://events.withgoogle.com/atp2020 ✉ atp-suporte@googlegroups.com http://bit.ly/atp2020-youtube http://bit.ly/atp2020-discord Links

  16. A evolução das aplicações móveis

  17. Nokia 3310 Snake

  18. Pixel 3 Pokémon Go (AR)

  19. Android

  20. (quando começamos, 2009) • Android 1.6 (Donut) • 528MHz CPU

    • 288MB RAM • Ecrã TFT 65k • Trackball • Sem câmera frontal • 3.15MP câmera HTC Magic (actualmente) Pixel 5 • Android 11 • Octa-core CPU • 8GB RAM • Ecrã OLED, 90Hz • Todo o ecrã é tátil • 8MP câmera frontal • 12.2 e 16MP câmera Android
  21. ❌ (quando começamos, 2009) HTC Magic (actualmente) Pixel 5 Android

  22. versões Android 11 Android 10 Apple Pie 1.0 Cupcake 1.5

    Donut 1.6 Eclair 2.0/2.1 Froyo 2.2 Gingerbread 2.3.x Honeycomb 3.x Ice Cream Sandwich 4.0 Jelly Bean 4.1-4.3 KitKat 4.4 Lollipop 5.0 Marshmallow 6.0 Nougat 7.0 Oreo 8.0 Pie 9.0 Android
  23. *ícones de flaticon.com Rabanadas 11 Queijadinha 10 Arroz Doce 1.0

    Cornucópia 1.5 Filhoses 2.2 Gargantas de Freira 2.3.x <chef_precisa-se> 3.x <chef_precisa-se> 4.0 Jesuítas 4.1-4.3 Molotoff 6.0 Nata 7.0 Ovos Moles 8.0 Pudim de Abade de Priscos 9.0 Leite Creme 5.0 Doce da Casa 1.6 Escarpiada 2.0/2.1 <chef_precisa-se> 4.4 versões Portuguesas Android
  24. Android 11 Android 10 Apple Pie 1.0 Cupcake 1.5 Donut

    1.6 Eclair 2.0/2.1 Froyo 2.2 Gingerbread 2.3.x Honeycomb 3.x Ice Cream Sandwich 4.0 Jelly Bean 4.1-4.3 KitKat 4.4 Lollipop 5.0 Marshmallow 6.0 Nougat 7.0 Oreo 8.0 Pie 9.0 que sobremesas seriam no teu país? (envia-nos uma mensagem no discord/YouTube) versões <?> Android
  25. Apple Pie Ice Cream Sandwich KitKat Lollipop Oreo Pie Android

    1.0 Android 4.0 Android 4.4 Android 5.0 Android 8.0 Android 9.0 evoluções da UI Android *adaptado a partir do tweet Luke Wroblewski, https://twitter.com/lukew/status/996461585693540352
  26. Porque Android?

  27. 2.5 mil milhões de pessoas usam um dispositivo Android todos

    os dias
  28. ~75% de todos os smartphones são Android *https://gs.statcounter.com/os-market-share/mobile/worldwide

  29. 1.2 mil milhões de empregos são gerados diretamente pela plataforma

    Android, só na Europa
  30. em todos os dispositivos Android

  31. Que versão de Android devo escolher? distribuição Android

  32. distribuição Android

  33. distribuição Android

  34. Diferentes frameworks para programar para Android

  35. Photo by Lucas Miguel on Unsplash

  36. Photo by Brandon Hoogenboom on Unsplash

  37. Qualquer tecnologia suficientemente avançada é indistinguível da magia. - Arthur

    C. Clarke
  38. • Desenvolvimento nativo ◦ Java/ Kotlin ❤ ◦ Bibliotecas nativas

    escritas em C/C++ • Híbrido ◦ PhoneGap, Ionic, etc. • Cross platform ◦ Flutter, React Native, Xamarin, NativeScript, Ionic, Ruby Motion, etc. • Multiplatforma ◦ Kotlin (toda a lógica é partilhada por diferentes plataformas, e a UI desenvolvida nativamente) Android
  39. ✅ Melhor performance ✅ Kotlin! Tiras o partido de todas

    as funcionalidades que esta linguagem oferece ✅ Acesso directo a todas as API’s/ funcionalidades ✅ UI nativa Quando o OS é actualizado esta também vai ser ✅ Facilidade em debug ✅ Possibilidade de criar UI’s complexas e fluidas facilmente™ desenvolvimento nativo Android
  40. ❌ Não existe suporte direto para multi platforma Reutilização de

    código apenas existe entre aplicações nativas É necessário desenvolver uma segunda aplicação Os custos e o tempo de desenvolvimento (em horas) duplicam desenvolvimento nativo Android
  41. None
  42. Google Maps Pinterest Netflix Pokémon Go *as aplicações são muitas

    vezes reescritas, por isso é possível que esta informação deixe de ser válida no futuro exemplo de aplicações nativas Android
  43. ✅ Estas aplicações tanto têm código nativo como Web HTML/CSS/JS

    para desenhar a app e plugins para aceder às funcionalidades nativas Apesar de ser uma aplicação, está a correr dentro de um browser (WebKit) ✅ Custos de desenvolvimento mais baixos Não é necessário ter duas equipas (uma de Android e outra de iOS) ✅ Tempos de desenvolvimento (em horas) mais rápidos ✅ Curva de aprendizagem para programadores Web reduzida Grande parte destas ferramentas têm por base linguagens Web já conhecidas desenvolvimento híbrido Android
  44. ❌ Aceder a novas API’s pode implicar que tenhas de

    escrever código nativo ❌ A performance não é a mesma comparativamente com nativo ❌ Suporte offline na maior parte das vezes é inexistente ❌ A UX pode não ser a melhor desenvolvimento híbrido Android
  45. Evernote Gmail Untappd JustWatch *as aplicações são muitas vezes reescritas,

    por isso é possível que esta informação deixe de ser válida no futuro exemplo de aplicações híbridas Android
  46. ✅ Custos de desenvolvimento mais baixos Não é necessário ter

    duas equipas (uma de Android e outra de iOS) ✅ Tempos de desenvolvimento (em horas) mais rápidos Consegues desenvolver com poucos ajustes para duas plataformas distintas Base de código única ✅ Melhor performance que as soluções híbridas ✅ Visualmente é mais difícil de distinguir de uma aplicação nativa desenvolvimento cross-platform Android
  47. ❌ Dependem da implementação da UI que a framework oferece

    Novos updates no SO, não se refletem imediatamente na aplicação ❌ Apesar de melhor, a performance continua a não ser igual à nativa ❌ As funcionalidades disponíveis dependem se a framework tem esse suporte Se uma das plataformas não tem uma funcionalidade, esta pode não ser disponibilizada para a outra ❌ Estás a confiar o teu projecto a uma framework/ linguagem O que vai acontecer daqui a 10 anos? Ainda vai ter actualizações a framework? desenvolvimento cross-platform Android
  48. Airbnb Uber Eats Instagram Discord *as aplicações são muitas vezes

    reescritas, por isso é possível que esta informação deixe de ser válida no futuro exemplo de aplicações cross-platform Android
  49. Instagram exemplo de aplicações cross-platform Android

  50. ✅ A camada lógica é partilhada entre Android e iOS

    (e até outras plataformas) Consistência entre as várias plataformas Custos de desenvolvimento mais baixos ✅ Baixo risco Não és obrigado a partilhar tudo. Tu decides o que queres partilhar entre ambas as plataformas ✅ A UI é desenvolvida nativamente Android em Java/Kotlin, iOS em objective-c/swift ✅ O código partilhado é desenvolvido em Kotlin Tiras partido de todas as funcionalidades que a linguagem te oferece ✅ Grande suporte da JetBrains e da comunidade desenvolvimento multiplatforma Android
  51. ❌ Ainda se encontra em alpha ❌ Os tempos de

    compilação para native (iOS) ainda são demorados ❌ Fazer debug em iOS não é uma tarefa fácil desenvolvimento multiplatforma Android
  52. None
  53. *as aplicações são muitas vezes reescritas, por isso é possível

    que esta informação deixe de ser válida no futuro Space Cash App Yandex Maps Workspace exemplo de aplicações multiplatforma Android
  54. Git & GitHub

  55. ProjetoATP 1 1 Android Studio ProjetoATP_1 ProjetoATP_Aula3 ProjetoATP_Final ProjetoATP_este ProjetoATP_Funciona

    ProjetoATP_FINAL_2 ProjetoATP_2 ProjetoATP_FINAL_ FINAL ProjetoATP_FINAL_ FINAL_A_ENVIAR_E STE ProjetoATP_FINAL_ FINAL_A_ENVIAR_E STE_2
  56. Sistema de versionamento

  57. • Sistema de controlo de versões distribuído • Criado por

    Linus Torvalds (Linux) • Lançado em 2005 • Multiplataforma, Linux, Mac OS e Windows Git
  58. Main Git

  59. Main Requisito 1 Git

  60. Git Main Requisito 1

  61. Main Requisito 1 Requisito 2 Git

  62. Main Requisito 1 Requisito 2 Git

  63. Git

  64. Como instalar?

  65. highlight this link https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

  66. GitHub

  67. • Plataforma de armazenamento de código • Grátis para projetos

    de código aberto • Repositórios privados gratuitos para contas pessoais • Todas as funcionalidades disponíveis para contas de Universidade GitHub
  68. None
  69. None
  70. None
  71. None
  72. https://github.com/android-training-program

  73. Photo by Austin Distel on Unsplash

  74. Uma pausa com Android 4.4

  75. Uma pausa com Mas não saiam dos vossos lugares (Não

    patrocinado infelizmente ) Kitkat
  76. Kotlin

  77. None
  78. • Criada pela JetBrains em 2011 • Adotada como oficial

    para Android em 2017 • 100% interoperável com Java • Multiplataforma • Orientada a objetos e funcional, concisa e estaticamente tipada • Nome de uma ilha na Rússia Kotlin
  79. None
  80. Kotlin não é apenas sobre desenvolveres a tua aplicação com

    menos linhas de código mas sim para escreveres aplicações melhores e mais seguras. - Arnaud Giuliani, Android Makers 2017 Kotlin
  81. Null safety Type inference Extensions String interpolation Default values Mutability

    Sealed Classes Data classes Collections When Kotlin
  82. null safety Kotlin

  83. var nameThatCanBeNull: String? var name: String null safety Kotlin null

    can not be a value of a non-null type String name = null nameThatCanBeNull = null Photo by Aziz Acharki on Unsplash
  84. printDog(name ?: "Bobi") printDog(name ?: "Bobi") var name: String? fun

    printDog(tag: String) printDog(name) null safety Kotlin Type mismatch Photo by Stephanie Klepacki on Unsplash
  85. dog = Dog("Max") val dog = Dog("Bobi") var doggo =

    Dog("Bobi") mutability Kotlin Val cannot be reassigned doggo = Dog("Max") val(ue) var(iable)
  86. when(dog.legs) { 0 -> println("Humm... Será mesmo um cão? ")

    1 -> println("Oh, coitadinho ") 2, 3 -> println("Ao menos consegue caminhar ") 4 -> { println("Quem é lindo? Busca... ") } in 5..10 -> println("Assim mais parece uma ") else -> println("Pois, ninguém sabe ") } when Kotlin
  87. val dog: Dog = Dog() val dog = Dog() dog.legs

    = 4 // Int var legs = dog.legs dog.legs = 4L //Long type inference Kotlin val animal = getAnimal() fun printDog(dog: Dog) if(animal is Dog){ printDog(animal) } The integer literal does not conform to the expected type Int
  88. sealed class Animal { data class Dog(val name: String): Animal()

    data class Cat(val name: String): Animal() data class Penguin(val name: String): Animal() } sealed class Kotlin Photo by Amy Asher on Unsplash
  89. public class Dog { private String name; public Dog(String name)

    { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Dog dog = (Dog) o; return Objects.equals(name, dog.name); } @Override public int hashCode() { return Objects.hash(name); } @Override public String toString() { return "Dog{" + "name='" + name + '\'' + '}'; } } data class Dog(var name: String) data class Kotlin
  90. fun Int.plus2(): Int { return this + 2 } val

    result = 5.plus2() // 7 extensions Kotlin
  91. fun printDog(dog: Dog, legs: Int) { println("O " + dog.name

    + " tem " + legs + " patas") fun printNails(dog: Dog, legs: Int) { println("O ${dog.name} tem ${legs * 3} unhas") } printNails(Dog("Bobi"), 4) // “O Bobi tem 12 unhas” println("O ${dog.name} tem $legs patas") } string interpolation Kotlin
  92. fun printDog(name: String = "Bobi", legs: Int = 4) {

    println("O $name tem $legs patas) } fun printDog(name: String = "Bobi", legs: Int = 4) { println("O $name tem $legs patas) } printDog() // O Bobi tem 4 patas printDog("Max") // O Max tem 4 patas printDog("Toy", 2) // O Toy tem 2 patas printDog( legs = 2, name = "Toy") // O Toy tem 2 patas default values Kotlin
  93. • getOrElse() • find() • filter() • filterNot() • fitletNotNull()

    • flatMap() • take() • takeLast() • sortBy() • sortByDescending() • groupBy() • map() • mapNotNull() • all() • any() • sumBy() • zip() • ... collections Kotlin
  94. mutableListOf(1, null, 2, null, 3, 4, 5, 6, 7, 8,

    9) .filterNotNull() .filter { it % 2 == 0 } .sortedDescending() > [1, null, 2, null, 3, 4, 5, 6, 7, 8, 9] collections Kotlin
  95. mutableListOf(1, null, 2, null, 3, 4, 5, 6, 7, 8,

    9) .filterNotNull() .filter { it % 2 == 0 } .sortedDescending() > [1, 2, 3, 4, 5, 6, 7, 8, 9] collections Kotlin
  96. mutableListOf(1, null, 2, null, 3, 4, 5, 6, 7, 8,

    9) .filterNotNull() .filter { it % 2 == 0 } .sortedDescending() > [2, 4, 6, 8] collections Kotlin
  97. mutableListOf(1, null, 2, null, 3, 4, 5, 6, 7, 8,

    9) .filterNotNull() .filter { it % 2 == 0 } .sortedDescending() > [8, 6, 4, 2] collections Kotlin
  98. Android Server side Native em todo o lado Kotlin Web

  99. Kotlin Koans

  100. https://play.kotlinlang.org/koans/overview

  101. Semana 0 Pronto para começar

  102. Desenvolver uma aplicação móvel

  103. 1. Ter uma ideia (o passo mais difícil na realidade)

  104. 2. Desenhá-la no papel Um título Algum texto, não muito.

    O suficiente para conseguir aqui ocupar três linhas. Feito.
  105. 3. Programá-la

  106. None
  107. 4. Testar todas as funcionalidades ♂

  108. 5. Corrigir os problemas encontrados

  109. 6. (Re)testar todas as funcionalidades ♂

  110. 7. Submeter na Google Play Store

  111. https://play.google.com/console

  112. 8. Anunciar a todos os amig@s para partilharem

  113. 9. Adicionar funcionalidades pagas

  114. 10. Reformar e viver dos lucros

  115. Android Studio

  116. • Editor oficial para desenvolvimento Android • Baseado no JetBrains'

    IntelliJ IDE • Multiplataforma (Mac OS, Windows, Linux) • Emulador e gestor de SDK’s pré-instalado • Inspecção de base de dados, visualização e inspeção de UI, etc. Android Studio https://developer.android.com/studio/
  117. https://developer.android.com/studio/

  118. None
  119. Vista de todos os ficheiros do projecto

  120. Compilar o projeto

  121. Dispositivos disponíveis

  122. None
  123. Gestor emuladores ☝

  124. Gestor dos SDKs instalados ☝

  125. Sincronizar ficheiros Gradle

  126. Modo Debug ☝

  127. Correr a aplicação no dispositivo ☝

  128. None
  129. Parar a aplicação

  130. Output do último comando

  131. None
  132. None
  133. Logs da aplicação

  134. None
  135. Limpar logs

  136. None
  137. Vista de um layout

  138. Paleta de componentes gráficos

  139. Atributos da View selecionada

  140. Vista do código

  141. Vista partilhada

  142. Uma novidade fresquinha

  143. Novidades de hoje! AS 4.1

  144. Criar uma aplicação

  145. None
  146. Emulador

  147. None
  148. Telemóvel

  149. None
  150. Materiais

  151. • Android Developers • Android Codelabs • Android YouTube •

    Android Medium • Android GitHub • Android Twitter • Google Courses Queres aprender mais sobre Android?
  152. • Kotlin Reference Manual • Android Kotlin Fundamentals 01.1: Get

    started • Kotlin Bootcamp for Programmers • Kotlin Slack • Kotlin Koans • Kotlin Playground Mais sobre Kotlin
  153. • Android Developers Backstage • Ícones do Material Design •

    Asset Generator • Introduction to Github E ainda...
  154. • Google Computer Science Curriculum • Udacity Nanodegree • Codecademy

    • Udemy • Coursera • Khanacademy Queres aprender programar?
  155. Dúvidas?

  156. Obrigado ‍♀

  157. Android Training Program PORTUGAL Aula #1 Bem-vindos ao Android Próxima

    aula: 21 de Outubro