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

Android Training Program - Portugal, Aula 0

ATP Portugal
October 14, 2020

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

ATP Portugal

October 14, 2020
Tweet

More Decks by ATP Portugal

Other Decks in Programming

Transcript

  1. • 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
  2. • 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
  3. • 14 eventos • 11 cidades • 11 instituições •

    3267 participantes Edições anteriores
  4. • 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
  5. • 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
  6. • 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
  7. #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
  8. • [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
  9. (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
  10. 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
  11. *í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
  12. 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
  13. 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
  14. • 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
  15. ✅ 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
  16. ❌ 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
  17. 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
  18. ✅ 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
  19. ❌ 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
  20. 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
  21. ✅ 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
  22. ❌ 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
  23. 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
  24. ✅ 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
  25. ❌ 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
  26. *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
  27. 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
  28. • Sistema de controlo de versões distribuído • Criado por

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

  30. • 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
  31. Uma pausa com Mas não saiam dos vossos lugares (Não

    patrocinado infelizmente ) Kitkat
  32. • 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
  33. 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
  34. 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
  35. 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
  36. dog = Dog("Max") val dog = Dog("Bobi") var doggo =

    Dog("Bobi") mutability Kotlin Val cannot be reassigned doggo = Dog("Max") val(ue) var(iable)
  37. 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
  38. 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
  39. 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
  40. 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
  41. fun Int.plus2(): Int { return this + 2 } val

    result = 5.plus2() // 7 extensions Kotlin
  42. 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
  43. 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
  44. • getOrElse() • find() • filter() • filterNot() • fitletNotNull()

    • flatMap() • take() • takeLast() • sortBy() • sortByDescending() • groupBy() • map() • mapNotNull() • all() • any() • sumBy() • zip() • ... collections Kotlin
  45. 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
  46. 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
  47. mutableListOf(1, null, 2, null, 3, 4, 5, 6, 7, 8,

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

    9) .filterNotNull() .filter { it % 2 == 0 } .sortedDescending() > [8, 6, 4, 2] collections Kotlin
  49. 2. Desenhá-la no papel Um título Algum texto, não muito.

    O suficiente para conseguir aqui ocupar três linhas. Feito.
  50. • 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/
  51. • Android Developers • Android Codelabs • Android YouTube •

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

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

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

    • Udemy • Coursera • Khanacademy Queres aprender programar?