0% acharam este documento útil (0 voto)
7 visualizações31 páginas

Fundamentos de Kotlin e Android

O documento é um guia abrangente sobre desenvolvimento Android, cobrindo fundamentos de Kotlin, conceitos de orientação a objetos, e componentes essenciais do Android, como Views, Fragments e navegação. Ele inclui links para documentação, artigos e cursos da Alura, fornecendo recursos para aprender a criar aplicativos Android utilizando tanto a abordagem tradicional com XML quanto o Jetpack Compose. O conteúdo é estruturado em níveis, facilitando o aprendizado progressivo das tecnologias envolvidas no desenvolvimento Android.

Enviado por

servidorts3.dc
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações31 páginas

Fundamentos de Kotlin e Android

O documento é um guia abrangente sobre desenvolvimento Android, cobrindo fundamentos de Kotlin, conceitos de orientação a objetos, e componentes essenciais do Android, como Views, Fragments e navegação. Ele inclui links para documentação, artigos e cursos da Alura, fornecendo recursos para aprender a criar aplicativos Android utilizando tanto a abordagem tradicional com XML quanto o Jetpack Compose. O conteúdo é estruturado em níveis, facilitando o aprendizado progressivo das tecnologias envolvidas no desenvolvimento Android.

Enviado por

servidorts3.dc
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Android

TechGuide - Alura, FIAP e PM3

Nivel 1
Kotlin - Fundamentos:
Kotlin é uma linguagem de programação multiplataforma, orientada a objetos, funcional e
estaticamente tipada. Ela compila para a máquina virtual Java e também pode ser traduzida para
a linguagem JavaScript e compilada para código nativo (via LLVM). É a linguagem oficial do
sistema Android da Google.
Entender a sua sintaxe
Conhecer os tipos primitivos
Declarar e usar variáveis e constantes
Usar estruturas condicionais (if, else)
Usar estruturas de repetição e laços (while, for)
Usar funções, passando parâmetros e argumentos
Implementando métodos e reutilizando eles
Null Safety (Elimine o perigo de referências nulas)
Exceptions e Throwables
Convenções de código
Manipular Coleções, arrays e listas
Orientação a Objetos com Kotlin (Properties, Data class, Companion Objects, Delegation)
Receber dados de uma API
Conteúdos

Site Documentação Kotlin: começando com Kotlin (inglês) ([Link]

[Link])
Site Documentação Kotlin: Tipos Básicos e Kotlin (inglês) ([Link]

[Link])
SiteDocumentação Kotlin: Sintaxe básica do Kotlin(inglês) ([Link]
[Link])
Site Documentação Kotlin: Convenções de código do Kotlin (inglês)
([Link]
Site Explorando a documentação: Números em Kotlin ([Link]

documentacao-numeros-em-kotlin-15go)
YouTube Kotlin // Dicionário do Programador ([Link]
Conteúdos Alura:

Artigo Linguagem Kotlin: o que é, para que serve e um Guia para aprender
([Link]
Podcast Case Contabilizei: Kotlin - Hipsters Ponto Tech ([Link]

contabilizei-kotlin-hipsters-ponto-tech-310/)
Curso Formação Kotlin ([Link]
Desafio 7 Days of Code: Kotlin ([Link]

Android - Fundamentos:
Conhecer Kotlin, Java ou C++ que são as linguagens para desenvolver Apps Android.
Entender como o SDK do Android empacota o código e recursos do App em um APK (Android
Package - Pacote Android) para rodar no SO do Android
Saber os componentes de entrada de um App - Activity, Service, Broadcast Receiver e Content
Provider
Compreender os ciclos de vida de componentes do Android e como funcionam - O ciclo de vida
de uma Activity
Ativar componentes de entrada do App com Intents
Conhecer o arquivo de manifesto e os principais itens de configuração
Entender quais são os recursos de um projeto Android - código fonte, recursos estáticos,
drawables, layout, mipmap, values etc
Criar um projeto Android com o Android Studio e rodar em um dispositivo físico ou virtual
Conhecer bibliotecas do jetpack para garantir a compatibilidade entre as versões do Android
Conteúdos
Site Documentação Android: Fundamentos de aplicativos

([Link]
Site Documentação Android: Componentes de aplicativo

([Link]
Site Documentação Android: Ativação de componentes
([Link]
br#ActivatingComponents#Components)
Site Documentação Android: Visão geral do manifesto do aplicativo

([Link]
Site Documentação Android: Visão geral dos recursos do aplicativo
([Link]
Site Documentação Android: Criar seu primeiro App Android
([Link]
Site Documentação Android: Acessar as bibliotecas do Jetpack por tipo

([Link]
Conteúdos Alura:
Artigo Criando o primeiro app Android ([Link]

app-android)
Artigo Activity Lifecycle: por que você deve conhecer sobre o ciclo de vida da Activity

([Link]
CursoAndroid com Kotlin criando um app ([Link]
android-kotlin)
Conceitos de Orientação a Objetos:
A Programação Orientada a Objetos é um paradigma de programação de software baseado na
composição e interação entre diversas unidades chamadas de 'objetos' e as classes, que
contêm uma identidade, propriedades e métodos). Ela é baseada em quatro componentes da
programação: abstração digital, encapsulamento, herança e polimorfismo.
Como funcionam objetos
Criar e utilizar construtores
O que são classes
Criar e utilizar métodos
Como funciona encapsulamento
O que é herança
O que é polimorfismo
Como funcionam interfaces
O que são abstrações
Conteúdos
Artigo Princípios básicos da Programação Orientação a Objetos (POO)

([Link]
programa%C3%A7%C3%A3o-orienta%C3%A7%C3%A3o-a-objetos-poo-62da3998b7ce)
YouTube FernandaDev: O que é Programação Orientada a Objetos?(POO)

([Link]
YouTube Giuliana Bezerra: Desmistificando os tipos de referência - Ep. 8

([Link]
Conteúdos Alura:
Podcast [Link]: TechGuide - Orientação a Objetos – Hipsters Ponto Tech #350

([Link]
POO: o que é programação orientada a objetos? ([Link]
Artigo

programacao-orientada-a-objetos)
SiteApostila: Java e Orientação a Objetos ([Link]
objetos)
Site Livro: Orientação a Objetos ([Link]

conceitos)
YouTube Alura: Orientação a objetos (com Roberta Arcoverde) ([Link]

v=jpuJ1qrluoU)
YouTube Alura: Imersão Java: Orientação a Objetos, APIs e além (e live coding!)

([Link]
Curso Formação Java e Orientação a Objetos ([Link]
Curso Formação C# e Orientação a Objetos ([Link]

orientacao-objetos)
CursoFormação Python e orientação a objetos ([Link]
linguagem)
Curso Curso Orientação a Objetos com PHP: Classes, métodos e atributos
([Link]
Curso Curso JavaScript: programação orientada a objetos ([Link]

online-javascript-passos-programacao-orientada-objetos)
Android - Sistema de View:
A classe View representa o bloco básico de construção dos componentes de interface do
usuário em Android.
Conhecer a referência View e ViewGroup para definir um Layout
Saber as principais ViewGroups para construir layouts - LinearLayout, RelativeLayout,
FrameLayout e ConstraintLayout
Usar o editor visual de Layout para personalizar a tela, ou então, utilizar o arquivo XML para a
edição
Conhecer o Preview do editor visual e usá-lo para preparar as telas e componentes do App
Utilizar as Views do SDK do Android - TextView, Button, EditText, CheckBox, DatePicker etc
Criar Views personalizadas para atender demandas específicas
Personalizar as Views com propriedades do Android ou da própria View - Ajustes de altura,
largura, visibilidade, espaçamento
Implementar Layouts de conteúdos dinâmico com adaptadores - AdapterView e RecyclerView
Integrar código de negócio com o layout da tela - Chamar e manipular as Views com o View
Binding
Reagir a eventos das Views a partir de listeners como cliques, cliques longos, rolagem, arrastar e
soltar
Conteúdos

SiteDocumentação Android: Layouts ([Link]


layout?hl=pt-br)
Site Documentação Android: Layouts (ViewGroups) comuns
([Link]
Site Documentação Android: Criar uma IU com o Layout Editor

([Link]
Site Documentação Android: Criar uma IU responsiva com o ConstraintLayout

([Link]
Artigo Android View: Prólogo ([Link]

pr%C3%B3logo-d44a89c14fd1)
Listas com RecyclerView ([Link]
Artigo

d3f41e0d653c)
Site Documentação Android: Visão geral dos eventos de entrada
([Link]
YouTube Vinícius Thiengo: View - Entendendo os Componentes Visuais no Android

([Link]

Conteúdos Alura:
Artigo View Binding Android ([Link]
Curso Android com Kotlin: criando um app ([Link]

android-kotlin)
Curso Android com Kotlin: personalize o seu App ([Link]

kotlin-personalize-app)
Curso RecyclerView: listas flexíveis e performáticas ([Link]

recyclerview-listas-flexiveis-e-performaticas)
Curso RecyclerView: Listeners, animações e boas práticas ([Link]

online-recyclerview-listeners-animacoes)
Curso RecyclerView: criando telas com Constraint Layouts ([Link]

online-layout-android-1)

Android - Fragments:
Um Fragment representa o comportamento ou uma parte da interface do usuário em uma
Activity hospedeira. É possível combinar vários fragmentos em uma única Activity para criar uma
IU de vários painéis e reutilizar um fragmento em diversas atividades. Você pode imaginar um
fragment como uma seção modular de uma Activity, que tem o próprio ciclo de vida, recebe os
próprios eventos de entrada e que pode ser adicionada ou removida durante a execução da
Activity.
Entender o que é um Fragment
Como usar e reutilizar Fragments na mesma Activity
Entender os motivos para utilizar Fragments em projetos Android
Implementar layouts com múltiplos painéis
Migrar projetos Android que utilizam apenas Activities para utilizar fragments
Lidar com transações do gerenciador de fragments
Conteúdos
Site Documentação Android: Fragmentos
([Link]
Site Documentação Android: Ciclo de Vida dos Fragments (inglês)
([Link]
Site Documentação Android: Filosofia de projeto com Fragments

([Link]
Artigo Aprenda a Usar os Fragments em 4 Passos

([Link]
YouTube Pedro Henrique de Oliveira e Silva: Android - Utilizando Fragments

([Link]
Conteúdos Alura:

Curso Android Fragments: Reutilizando componentes visuais


([Link]

Android - Navegação no App:


A navegação de telas em Apps é fundamental para a experiência de uso de Apps Android. Para
isso é essencial conhecer os princípios de navegação do Android.
Aprender o que é a biblioteca Navigation e como é possível implementá-la, seja para o sistema
de Views ou para o Jetpack Compose
Integrar a navegação com componentes do App, seja em navegação de abas, ou na visualização
de componentes visuais dependendo da tela
Saber o que é uma task de back stack do Android
Conhecer os App links - Deep Link, Web Links e Android App Links
Conteúdos

Site Documentação Android: Princípios de navegação

([Link]
Site Documentação Android: Navegação ([Link]

hl=pt-br)
Site Documentação Android: Como navegar com o Compose

([Link]
Site Documentação Android: Entenda as tarefas e a pilha de retorno

([Link]
ArtigoUsando Navigation Component — Android Jetpack ([Link]
br/usando-navigation-component-android-jetpack-e1356921b31d)
Artigo Introdução ao Compose Navigation
([Link]
574d1d9572a0)
YouTube Stack Mobile: Android Para Iniciantes - Navegação Entre Telas
([Link]
YouTubeCodandoTV: Aprenda a usar o Navigation do Compose! ([Link]
si=tejc83Raer4wsWvy)
Conteúdos Alura:
Curso Navigation: transição de telas no Android ([Link]

navigation)
Curso Navigation: novas features e reutilização de código ([Link]

online-android-navigation-features)
Curso Jetpack Compose: navegando entre telas com o Navigation
([Link]

Jetpack Compose - Fundamentos:


O Jetpack Compose é uma ferramenta que trás a proposta de criar interfaces nativas Android
com menos código, mais rápido e deixa seus apps mais bonitos, ele faz isso através da
abordagem declarativa.
Criar um app Android do zero utilizando o Jetpack Compose
Construção de Layouts apartir de composables
Pré-visualizações de Composables
Gerenciamento de estados, eventos, composição e recomposição
Configurar o Compose em um projeto já existente e aplicar a interoperabilidade
Trabalhar com formulários
Entender a diferença do XML para o Compose
Manter estados utilizando o padrão MVVM com ViewModel e StateFlow, entendendo o ciclo de
vida

Conteúdos
Site Documentação Android: Tutorial do Android Compose
([Link]
Artigo Novas pessoas desenvolvedoras android deveriam aprender Compose ou XML? (inglês)

([Link]
YouTube Utilizando o JETPACK COMPOSE para criar UIs modernas para Apps Android

([Link]
v=6qIjSVVzlt0&ab_channel=InstitutodeInform%C3%A1ticaUFG)
Site Documentação Android: Estado e Jetpack Compose

([Link]
Site Documentação Android: Ciclo de vida dos composables

([Link]
br#:~:text=Quando%20o%20Jetpack%20Compose%20executa,Jetpack%20Compose%20programar%C3%A
YouTube CodandoTV: Link da playList com vários vídeos ensinando como fazer

telas/implementações/animações e muito mais ([Link]


7tME9TKyA79CO-soQsOZ1q8itjTLCcg)
Alex Felipe - Playlist: Aprednendo Jetpack Compose ([Link]
YouTube

v=yWWOuxeqxwE&list=PLYaQbIm_3oZ9rHMFnm7si0LTqEDcYtG2t&pp=iAQB)
Conteúdos Alura:
YouTube O que é Jetpack Compose? com Alex Felipe | #HipstersPontoTube

([Link]
YouTube Jetpack Compose: Começando com Compose | #AluraMais

([Link]
Vale a pena aprender Jetpack Compose agora? ([Link]
Artigo

pena-aprender-jetpack-compose)
Curso Formação: Jetpack Compose - Criando telas e gerenciando estados
([Link]

Android - Persistência:
O conceito de "persistência de dados" refere-se a garantir que as informações inseridas na
aplicação serão armazenadas em um meio em que possam ser recuperadas de forma
consistente. Ou seja, são registros permanentes e que não são perdidos quando há o
encerramento da sessão.
No Android podemos armazenar de maneira persistente arquivos específicos ou para o App ou
compartilhado, informações de tipo primitivo com preferências e dados estruturados com banco
de dados.
Conteúdos

Site Documentação Android: Visão geral do armazenamento de dados e arquivos

([Link]
Site Documentação Android: Acessar arquivos específicos do app

([Link]
Site Documentação Android: Visão geral do armazenamento compartilhado

([Link]
Site Documentação Android: Salvar dados de chave-valor
([Link]
Site Documentação Android: Salvar dados em um banco de dados local usando o Room
([Link]
YouTube Kaique Ocanha - Aulas de Android: LIVE #010 - Room Database - Introdução a

Persistência de Dados com Kotlin localmente ([Link]


YouTube Alex Felipe - Aprenda a salvar dados no banco de dados do Android | Room | Coroutines

| Flow | ViewModel | Koin ([Link]


Conteúdos Alura:

Artigo Salvando informações com o Shared Preferences

([Link]
Curso Android com Kotlin: persistência de dados com o Room ([Link]

online-android-kotlin-persistencia-dados-room)
Curso Android com Kotlin: Migrations e relacionamento com o Room

([Link]
Curso Jetpack Compose: armazenamento de dados internos ([Link]

online-jetpack-compose-armazenamento-dados-internos)

Android - Gradle:
O Gradle e o plug-in do Android para Gradle(AGP) oferecem uma maneira flexível de compilar,
criar, gerenciar e empacotar seu app ou biblioteca Android.
O que é uma build tool
Aprender a estrutura de um projeto Android como um projeto multi módulo do Gradle
Para que serve o Gradle e como usá-lo
O que são dependências e como utilizá-las
Conteúdos

Site Documentação Android: Configure seu Build ([Link]

hl=pt-br)
Site Documentação Android: Dicas e receitas para o Gradle

([Link]
Site Documentação Android: Adicionando dependências do build - Gradle
([Link]
Site Documentação Android: Guia para Modularização de app
([Link]
Site AndroidPro: Gradle para Android - Entendendo o processo de build

([Link]
Artigo Gradle Android para Iniciantes ([Link]

iniciantes-roger-silva/?originalSubdomain=pt)
Site Slides sobre Desenvolvimento Android - by Moro ([Link]

about-android-development/blob/main/README_pt-[Link]#gradle-)
Conteúdos Alura:

Conhecendo as build tools no mundo Java ([Link]


YouTube

v=6llRWbdnmuk)
YouTube Começando com o Gradle: Tasks e comandos básicos
([Link]

Android - Carregamento de imagens:


As imagens vem em tamanhos e formas diferentes. Na maioria dos casos, elas são maiores do
que o necessário para a Interface de usuário (UI) de um app. Dado que estamos trabalhando
com memória limitada, no Android é usada uma técnica de decodificação de bitmaps, para evitar
todo o trabalho de utilizar isso, temos diversas bibliotecas que facilitam esse processo.
O que é Bitmap
Conhecer as bibliotecas de carregamento de imagens (Glide, Picasso, Coil, entre oturas) e usá-
las
Vantagens e desvantagens das bibliotecas de carregamento de imagens
Conteúdos

Artigo Bitmap: o que é, para que serve e como funciona

([Link]
YouTube Paulo Salvatore: Carregando imagens no Android com Kotlin | Glide

([Link]
YouTube Stevdza-San: Coil - Biblioteca moderna de carregamento de imagem | Android Studio

Tutorial (inglês) ([Link]


YouTube cedr!c: Como carregar uma imagem remota em Android - PICASSO & GLIDE
([Link]
Site Coil - Site oficial (inglês) ([Link]
Site Glide v4 - Site oficial (inglês) ([Link]
Site Picasso - Site oficial (inglês) ([Link]
YouTube CodandoTV: Carregar Imagens em uma lista usando Compose+Coil [StreamPlayerApp]
([Link]
Conteúdos Alura:

Curso Android com Kotlin: Personalize o seu app ([Link]


kotlin-personalize-app)
Curso Jetpack Compose: Criando um app android ([Link]

compose-app-android)

Nivel 2
Android - Permissões:
As permissões do app ajudam a apoiar a privacidade do usuário protegendo dados restritos,
como estados do sistema e os dados de contatos dos usuários, há também as ações restritas,
como a conexão a um dispositivo pareado e a gravação de áudio ou uso de câmera.
Entender o que são permissões
Aprender sobre os diferentes tipos de permissões
Permissões especiais
Práticas recomendadas
Conteúdos
Site Documentação Android: Permissões no Android

([Link]
Site Documentação Android: Uso de permissões - Android Manifest
([Link]
Site Documentação Android: Solicitando permissões do app
([Link]
Artigo Entendendo as permissões do app (inglês)

([Link]
YouTube Tiago Aguiar: Permissões Android - Tutorial Como Usar

([Link]

Kotlin - Assíncrono:
Na programação assíncrona as funções não são executadas em ordem. Com o assincronismo,
podemos interromper do código para conseguirmos alguma outra informação necessária para a
continuar a execução. Isso significa que o código espera por uma outra parte do código e,
enquanto espera, executa as demais partes.
Aprender as possibilidades para rodar o código de maneira assíncrona no Android
Conhecer o pacote [Link] e as suas soluções
Utilizar Coroutines como uma solução de código assíncrono no Kotlin
Entender e usar estruturas reativas como LiveData, Flow, StateFlow, RX, etc
Conteúdos
Site Documentação Android: Corrotinas do Kotlin no Android
([Link]
Site Documentação Android: Fluxos em Kotlin no Android

([Link]
Site Documentação Android: StateFlow e SharedFlow

([Link]
Site Documentação Android: Visão geral do LiveData

([Link]
Artigo Introdução ao RX Java com Kotlin
([Link]
90c58d184c6b)
YouTube Kotlin Coroutines: Criando um Projeto Android do Zero Com a Arquitetura MVVM e

LiveData ([Link]
YouTubeCodandoTV(Rods): Configurar o Networking na sua aplicação Retrofit+Okhttp+
Interceptores+Coroutines ([Link]

Conteúdos Alura:
Site Operações Assíncronas com Coroutines no Kotlin
([Link]
android-c58)
Retrofit com Coroutines e LiveData no Android ([Link]
Artigo

com-coroutines-e-livedata-no-android)

Kotlin - Comunicação com APIs:


Uma API é uma interface que desenvolvedores de software utilizam para programar a interação
com componentes ou recursos de software fora de seu próprio código. Uma definição ainda
mais simples é que uma API é a parte de um componente de software que é acessível a outros
componentes.
Realizar requisições HTTP para se comunicar com serviços online, como REST API é
fundamental na maioria dos Apps Android. Sendo assim, é importante conhecer as principais
ferramentas e técnicas necessárias para esse tipo de funcionalidade.
Conhecer bibliotecas famosas no mundo Android para realizar requisições - Retrofit, Ktor ou
Volley
Configurar as requisições para executararem de maneira assíncrona
Converter objetos para JSON e vice-versa
Conteúdos
Site Documentação Android: Conectar-se à rede

([Link]
Artigo Comunicação HTTP eficiente no Android com Volley

([Link]
volley-9772b4057a5c)
Artigo Consumindo API REST no Android com Retrofit em Kotlin
([Link]
1-5e752ab8a877)
YouTube Coder: Como fazer chamadas API usando a biblioteca Android Volley | Kotlin
([Link]
YouTube Tiago Aguiar: Retrofit - O Guia Definitivo para Cliente HTTP no Android
([Link]
Conteúdos Alura:
Artigo Retrofit com Coroutines e LiveData no Android ([Link]

com-coroutines-e-livedata-no-android)
Curso Android com Kotlin: comunicação com Web API ([Link]

android-kotlin-comunicacao-web-api)

Android - Recursos do sistema:


Os smartphones que estão sob a plataforma Android, na sua grande maioria possuem diversos
recursos específicos do sistema, tais como câmeras, sensores, gps, entre outros.
Aprenda quais são e como utilizar esses recursos
Conteúdos
Site Documentação Android: Visão geral do CameraX - Biblioteca para utilizar a camêra no

Android ([Link]
Site Documentação Android: Sensores - Sensores de Movimento, Posição e Ambiente

([Link]
SiteDocumentação Android: Visão Geral da Conectividade (Bluetooth, Wi-Fi, operações de
rede) ([Link]
Conteúdos Alura:
Alura: Utilizando o Google Maps em Apps Android ([Link]
YouTube

v=rpqi7Y1NQZY)
YouTube Alura: Tirando foto no app com a câmera do Android ([Link]

v=jLcrcTMoB88)

Android (IA):
Um Client-SDK para IA é uma ferramenta intermediária que simplifica a comunicação entre o seu
aplicativo e serviços de IA remotos. Imagine como uma ponte que liga o seu aplicativo (que está
local no seu dispositivo) a um servidor poderoso de IA (que geralmente fica na nuvem);
IA On-Device, ou inteligência artificial no dispositivo, refere-se à execução de tarefas de IA
diretamente no seu dispositivo pessoal, como smartphone, tablet ou smartwatch, em vez de
depender de servidores remotos na nuvem;
Aprender a traduzir textos automaticamente, reconhecer imagens, gerar respostas inteligentes e
mais utilizando IA no seu app;
Como acessar a API Gemini/GPT diretamente do app Android usando o SDK do cliente para
Android;
Como baixar e utilizar ferramentas de machine learning localmente nos apps;
Conteúdos

Site Documentação Google AI: Utilizar Gemini API

([Link]
Site Documentação ML Kit ([Link]
Site Documentação do TensorFlow Lite ([Link]
Site Documentação do Gemini Nano SDK ([Link]
YouTube TensorFlow - Modelos de linguagem no dispositivo com Keras e Android

([Link]
Conteúdos Alura:

Alura+ Alura+: Crie seu primeiro aplicativo de IA generativa no Android Studio

([Link]
android-studio-c9218)
Artigo Gemini no Android Studio: a Github Copilot da Google

([Link]
Curso Formação - Android com IA: criando apps mais inteligentes com o Google ML Kit

([Link]
Curso Formação Android: criando apps de forma inovadora com CoPilot, GPT e Gemini

([Link]

Kotlin - Injeção de Dependências:


Injeção de Dependências é um padrão de projeto no qual uma classe solicita dependências de
fontes externas ao invés de criá-las.
Ao escrever códigos em projetos Android, é muito que uma funcionalidade utilize códigos de
bibliotecas, como o Room para salvar dados ou o Retrofit para fazer requisições para REST API.
Essas bibliteocas são conhecidas como dependências dos nossos códigos, justamente pela
necessidade para realizar a ação esperada. Usar essas bibliotecas com facilidade em qualquer
parte do app pode ter os seus desafios, como oferecer instâncias únicas e realizar toda a
configuração necessária para o funcionamento correto. Para isso, utilizamos ferramentas de
injeção de dependência que facilitam o nosso trabalho.
Aprender a usar a técnica de injeção de dependências e alguma das ferramentas comuns no
Android para tal - Hilt, Dagger ou Koin
Conteúdos

Site Documentação Android: Injeção de dependência no Android

([Link]
Artigo Injeção de dependência no Kotlin com Koin

([Link]
com-koin-4d093f80cb63)
YouTube Chico Rasia: Viewmodel com injeção de dependência via Factory no Android com Kotlin

([Link]
YouTube Douglas Motta: Injeção de Dependência com Koin no Android

([Link]
YouTube CodandoTV(Rods): Configurar Koin de maneira completa
([Link]
Conteúdos Alura:

Artigo Injeção de dependência no Android com o Hilt ([Link]

de-dependencia-do-android-com-o-hilt)

Android - Testes:
O teste de software é o processo de avaliação e verificação de que um software realmente faz o
que deveria fazer. Os benefícios dos testes incluem a prevenção de bugs, a redução dos custos
de desenvolvimento e a melhoria do desempenho.
Usar testes unitários
Usar testes de integração
Usar testes instrumentados
Usar mocks para facilitar a implementação de testes com dependências
Implementar testes com ferramentas de Injeção de Dependências como o Hilt
Conteúdos

Site Documentação Android: Conceitos básicos de testes


([Link]
Site Documentação Android: O que testar no Android (Inglês)

([Link]
Site Documentação Android: Como testar o layout do Compose

([Link]
Site Documentação Android: Criar testes de unidade locais

([Link]
Artigo Testes Instrumentados: tipos de teste e como são executados.
([Link]
s%C3%A3o-executados-1f13a8cfe4c4)
YouTube Dev Vai Longe: 02 Testes unitários no Android com mockito, jUnit e kotlin.

([Link]
Conteúdos Alura:
CursoAndroid com Kotlin: testes de unidade e Mocks ([Link]
android-kotlin-testes-unidade-mocks)
Curso Android com Kotlin: testes instrumentados ([Link]

android-kotlin-testes-instrumentados)

Nivel 3
Android - Arquitetura:
O guia de arquitetura Android aborda práticas e a arquitetura recomendada para a criação de
apps robustos com alta qualidade de produção. Organizar sua base de código em partes
contidas e acopladas com flexibilidade (Modularização).
Aprender o que é e para que serve a arquitetura MVVM (Model-View-ViewModel)
Camadas de IU, dados e domínios
Fluxo de dados dentro do app
Como utilizar o ViewModel
Recomendações da arquitetura, padrão repositório, offline-first
Gerenciamento de estado
Injeção de dependências
Melhorar a experiência dos usuários do app com o ViewModel
Aprender o que é modularização
Benefícios da modularização
Conteúdos
Site Documentação Android: Guia para a arquitetura do app

([Link]
Site Documentação Android: Visão geral do ViewModel

([Link]
Site Documentação Android: Camada de IU
([Link]
Site Documentação Android: Camada de Domínio
([Link]
Site Documentação Android: Camada de dados

([Link]
Site Documentação Android: Camada de dados - offline first

([Link]
Site Resumo da série 'MAD Skills' de arquitetura (inglês) ([Link]

[Link]/2022/04/[Link])
YouTube Android pra valer: Como usar o ViewModel + LiveData no Android
([Link]
Site Documentação Android: Guia para a modularização de apps Android
([Link]
Site Documentação Android: Recomendações para arquiteturas do Android

([Link]
YouTube CodandoTV(Rods) - Simplificando o Clean Architecture +MVVM na sua aplicação mobile

- Guia Completo ([Link]


Conteúdos Alura:
Curso Jetpack Compose: mantendo estados com ViewModel

([Link]
Curso Architecture Components: ViewModel, LiveData e Room
([Link]

Android - Critérios de qualidade do App:


Ao escrever um App Android, existe uma série de requisitos para garantir uma qualidade
esperada, como por exemplo, a compatibilidade do App com a navegação esperada pelo
sistema Android, ou então, pelos gestos, etc.
Os requisitos são classificados como - Experiência visual, Funcionalidade, Desempenho e
estabilidade, Privacidade e segurança, Google Play e Procedimento de teste
Cumprir todos os requisitos, ou quase todos, significa que o App possui uma maior qualidade
para os usuários.
Conteúdos
Site Documentação Android: Principais critérios de qualidade do app
([Link]
Site Documentação Android: Deliver high performing user experiences (inglês)

([Link]
Site Documentação Android: Primeiros passos com telas grandes

([Link]
Site Documentação Android: Criar para bilhões ([Link]

guidelines/build-for-billions?hl=pt-br)

Android - Entrega e integração contínuas (CI/CD):


CI/CD é a abreviação de Continuous Integration/Continuous Delivery, traduzindo para o
português "entrega e integração contínuas". Trata-se de uma prática de desenvolvimento de
software que visa tornar a integração de código mais eficiente por meio de builds e testes
automatizados.
Ao implementar novas funcionalidades do App, precisamos garantir que todas as entregas irão
funcionar corretamente. Para isso, podemos utilizar técnicas de integração e entrega contínua,
dessa forma, agilizamos a evolução do App e tentamos garantir os comportamentos esperados
ao mesmo tempo.
Conhecer alguma das ferramentas para fazer a entrega contínua, como Firebase Test Lab,
Jenkins, GitHub Actions, etc
Conteúdos
Site Comece a testar com sistemas de integração contínua (CI)
([Link]
ArtigoContinuous Deployment no Android: como usar a Publishing API para automatizar seu
release ([Link]
f42b96ece80d)
Artigo Entrega Contínua Na Visão De Um Desenvolvedor Android
([Link]
YouTube Philipp Lackner: Aprenda a automatizar tarefas para Android com CI/CD (inglês)
([Link]

Android - Otimização do app:


Ao gerar um App, existem alguns detalhes de otimização para torná-lo rápido, menor e
otimizado, como por exemplo, a remoção de código desnecessário, a ofuscação que reduz o
nome dos códigos e a otimização que aplica estratégias mais agressivas para reduzir mais ainda
o app.
Aprender a ativar cada otimização no plugin do Android para o Gradle
Utilizar o proguard para realizar uma otimização mais agressiva
Ativar o multidex para que o app seja capaz de obter mais de 64000 métodos e conseguir
utilizar as técnicas de otimização
Conhecer e utilizar ferramentas auxiliarem para aumentar o desempenho do App
Conteúdos

Site Documentação Android: Reduzir, ofuscar e otimizar o app

([Link]
Site Documentação Android: Ativar multidex para apps com mais de 64.000 métodos

([Link]
Site Documentação Android: Guia de desempenho do app
([Link]
YouTube Philipp Lackner: Reduzir, otimizar and tornar seu app mais seguro com R8 & ProGuard

(inglês) ([Link]

Java - Fundamentos:
Java é uma linguagem de programação amplamente usada para codificar aplicações Web. Java
é uma linguagem multiplataforma, orientada a objetos e centrada em rede que pode ser usada
como uma plataforma em si. É uma linguagem de programação rápida, segura e confiável para
codificar tudo, desde aplicações móveis e software empresarial até aplicações de big data e
tecnologias do servidor.
Conhecer os tipos primitivos
Declarar variáveis, considerando os diferentes tipos
Usar estruturas condicionais ('if', 'else')
Conhecer os operadores de atribuição e comparação
Usar estruturas de repetição e laços ('while', 'for')
Usar funções, passando parâmetros e argumentos
Manipular métodos
Manipular arrays e listas
Obter dados de uma API
Criar construtores
Conteúdos
Site O que é Java? ([Link]
ArtigoAprenda Comigo: Java — Parte 1 ([Link]
parte-1-42ef8fddd8b6)
YouTube FernandaDev: Java (Aula 1 - Classes, Objetos, Atributos e Métodos)

([Link]
YouTube Loiane Groner: Primeiro Programa em Java ([Link]
Conteúdos Alura:
Artigo Java: o que é, linguagem e um Guia para iniciar na tecnologia
([Link]
Podcast Hipster 313 - Ecossistema Java revisitado ([Link]

revisitado-hipsters-ponto-tech-313/)
Artigo Como começar a desenvolver em Java? ([Link]

com-o-desenvolvimento-java)
Artigo Meu primeiro programa em Java ([Link]

programa-em-java)
Artigo Java: Conheça o método main ([Link]
Artigo Desenvolvendo aplicações Java com o VS Code

([Link]
Artigo Diferença entre int e Integer em Java ([Link]

int-e-integer-em-java)
Como converter String para Date em Java ([Link]
Artigo

converter-string-para-date-em-java)
Artigo Iterando uma lista em Java ([Link]
java)
Artigo Importando classes no Java ([Link]
java)
Site Apostila: Java e Orientação a Objetos ([Link]

objetos)
Site Apostila: Java para Desenvolvimento Web ([Link]
YouTube Alura: O que é o Java? ([Link]
Curso Formação Java e Orientação a Objetos ([Link]
Desafio 7 Days of Code: Java ([Link]

Android - Depuração:
Durante o desenvolvimento de um app, é bastante comum a presença de bugs inesperados,
como também, a falta de compreensão do motivo do bug. Para agilizar a análise e investigação
de problemas ou comportamentos inesperados no app, precisamos aprender a depurar ou
debuggar um app Android.
Saber como executar um app em depuração no Android Studio
Aprender a ativar a depuração em dispositivos físicos
Utilizar Logs para identificar eventos
Analisar stack track
Inspecionar o Layout, recursos do sistema como processador, memória e rede
Depurar o banco de dados do app e arquivos APKs pré-compilados
Analisar o build com o analizador de APK
Conteúdos
Site Documentação Android: Depurar seu app ([Link]

hl=pt-br)
Site Documentação Android: Configurar opções do desenvolvedor no dispositivo
([Link]
Site Documentação Android: Escrever e visualizar registros com o Logcat
([Link]
Site Documentação Android: Analisar um stack trace

([Link]
Site Documentação Android: Depurar o layout com o Layout Inspector e a Validação de layout

([Link]
Site Documentação Android: Inspecionar o tráfego de rede com o Network Inspector

([Link]
Site Documentação Android: Depurar seu banco de dados com o Database Inspector
([Link]
Site Documentação Android: Depurar APKs pré-compilados
([Link]
Site Documentação Android: Capturar e ler relatórios de bugs

([Link]
Site Documentação Android: Analisar seu build com o APK Analyzer

([Link]
YouTube Pedro Carvalho: Iniciando com Debug no Android Studio

([Link]
Conteúdos Alura:
Artigo O que é logcat e como visualizar logs no Android ([Link]

que-e-logcat-como-visualizar-logs-android)

Android - Segurança e Monitoramento:


À medida que seu projeto cresce, ele se torna mais visível, atraindo tanto um público maior
quanto potenciais invasores. A segurança do aplicativo, desde as fases iniciais de
desenvolvimento, é crucial para proteger a integridade do projeto e a privacidade dos usuários.
Adotar práticas de segurança robustas e se manter atualizado é essencial para evitar ameaças e
garantir uma experiência segura para sua empresa e seu usuário
Atente-se a entender as necessidades do seu projeto
Monitoramento é fundamental para compreender como seu aplicativo opera em produção.
Compreender o fluxo do usuário e identificar possíveis funis ajuda a aprimorar a estratégia do
seu projeto e pode ser um fator determinante para o sucesso do aplicativo.
A capacidade de antecipar e prever cenários de problemas antes que afetem o usuário final é
um diferencial crucial.
Conteúdos
Site Documentação: Práticas recomendadas para segurança de apps
([Link]
Site Documentação: Executar o app de monitoramento
([Link]
Site Github(Rods) - Mobile developer security roadmap

([Link]
YouTube CodandoTV(Rods) - Ofuscação do seu app - Segurança #02

([Link]
YouTube CodandoTV(Rods) - Malware do seu app - Segurança #03

([Link]
YouTube CodandoTV(Rods) - Autenticação do seu app - Segurança #04
([Link]
YouTube CodandoTV(Rods) - Análise de código do seu app - Segurança #05
([Link]
YouTube CodandoTV(Rods) - Comunicação de Tráfego do seu app - Segurança #06

([Link]
Site Slides sobre Desenvolvimento Android - by Moro ([Link]

about-android-development/blob/main/README_pt-[Link]#seguran%C3%A7a-)

Android - Implantação (Deployment):


O deployment ou implantação é o processo de disponibilizar um aplicativo Android para os
usuários. Existem várias maneiras de fazer isso, um deles é o uso da Play Store. Ela permite que
os desenvolvedores distribuam seus aplicativos para um público global.
Conhecer os conceitos básicos de deployment de aplicativos Android;
Criar uma conta de Google Developer;
Usar a Play Store para distribuir aplicativos Android para um público global.
Conteúdos
Site Documentação Android: Publicar o app ([Link]

hl=pt-br)
Artigo O que é necessário para publicar seu aplicativo no Google Play e na App Store

([Link]
e-na-app-store-em-2023-le6)
Artigo Crie e publique um aplicativo Android na Google Play Store

([Link]
store/)
YouTube Deivid Rothen: Como Publicar um Aplicativo Android na Play Store
([Link]
YouTube Stack Mobile: Como Publicar um Aplicativo Android na Loja da Google Play - Guia

Absolutamente Completo ([Link]


v=Xk28gXHQ9Bc&ab_channel=DeividRothen)

Habilidade Auxiliar: Infraestrutura e boas práticas


Git e GitHub - Fundamentos:
Git é um sistema de controle de versão distribuído gratuito e de código aberto projetado para
lidar com tudo, desde projetos pequenos a muito grandes com velocidade e eficiência.
GitHub é um serviço de hospedagem para desenvolvimento de software e controle de versão
usando Git.
Criar um repositório
Clonar um repositório
Fazer commit, push e pull de e para o repositório
Reverter um commit
Criar branches e pul requests
Lidar com merge e conflitos
Conteúdos
Site GitHub Documentação ([Link]
Site GitHub Pages Documentação ([Link]

github-pages/about-github-pages)
Site Git School - Visualizing Git ([Link]
Site Dangit, Git!?! ([Link]
YouTube Rafaella Ballerini: O que é Git e GitHub? - definição e conceitos importantes 1/2
([Link]
YouTube Rafaella Ballerini: Como usar Git e GitHub na prática! - desde o primeiro commit até o

pull request! 2/2 ([Link]


YouTube Mario Souto - Dev Soutinho: Git: Entendendo de vez como funciona do melhor e mais

visual jeito possível ([Link]


YouTube Mario Souto - Dev Soutinho: Como colocar seu projeto no ar DE GRAÇA via GitHub! |

Hospedagem com GitHub Pages ([Link]


YouTube CodandoTV(Rods) - 5 coisas que você precisa saber sobre Git
([Link]
YouTube CodandoTV(Rods) - README de Sucesso: Transforme seu Projeto ou seu Perfil em

Destaque no GitHub ([Link]


Conteúdos Alura:
Artigo Git e Github: O que são, Como Configurar e Primeiros Passos

([Link]
Artigo Mais git com o hub: a linha de comando do Github
([Link]
Podcast Hipsters 184: Guia do Iniciante em Github
([Link]
Site GitHub: diferentes maneiras de compartilhar seu projeto

([Link]
projeto-c2002)
SiteWebsérie: Git e Github para Sobrevivência ([Link]
github-para-sobrevivencia)
Podcast Hipsters 109: Git e Github ([Link]

hipsters-109-a474)
YouTube Alura: Git e Github para Sobrevivência 01: Como o Git funciona?

([Link]
Curso Curso Git e GitHub: compartilhando e colaborando em projetos

([Link]
Curso Curso Git e GitHub: dominando controle de versão de código
([Link]
Desafio 7 Days of Code: GitHub ([Link]

HTTP - Fundamentos:
HTTP significa Hyper Text Transfer Protocol. A comunicação entre computadores cliente e
servidores web é feita enviando solicitações HTTP e recebendo respostas HTTP.
Entender a diferença dos verbos HTTP
Testar os requests e ver os status codes no navegador
Saber fazer uma requisição HTTP na linha de comando com WGET
Baixar uma imagem com WGET
Fazer um post
Conteúdos
Site MDN Web Docs: Uma visão geral do HTTP ([Link]

BR/docs/Web/HTTP/Overview)
MDN Web Docs: Métodos de requisição HTTP ([Link]
Site

BR/docs/Web/HTTP/Methods)
Site HTTP Cats ([Link]
Site HTTP Dogs ([Link]
YouTube Fabiano Gabardo Lemos: Requisições HTTP - GET, POST, PUT, PATCH DELETE

([Link]
YouTube Programador a Bordo: Protocolo HTTP e TCP/IP - Introdução

([Link]
Conteúdos Alura:
Artigo HTTP: Desmistificando o protocolo da Web

([Link]
Artigo Métodos de requisição do HTTP ([Link]

requisicao-do-http)
Artigo Qual é a diferença entre HTTP e HTTPS? ([Link]

diferenca-entre-http-e-https)
Podcast [Link]: HTTP/2: magia com o novo protocolo - Hipsters 13
([Link]
CursoCurso HTTP: Entendendo a web por baixo dos panos ([Link]
online-http-entendendo-web-por-baixo-dos-panos)

JSON:
JSON significa JavaScript Object Notation (notação de objeto JavaScript). É um formato de texto
para armazenar e transmitir dados.
Criar um objeto
Transformar um objeto em uma string
Transformar uma string em objeto
Manipular um objeto
Conteúdos
Site MDN Web Docs: JSON ([Link]

BR/docs/Web/JavaScript/Reference/Global_Objects/JSON)
MDN Web Docs: Trabalhando com JSON ([Link]
Site

BR/docs/Learn/JavaScript/Objects/JSON)
ArtigoIntrodução ao JSON ([Link]
json-7825b1a550ff)
YouTube Marco Bruno: O que é JSON e como criar um objeto ([Link]

v=oCY5YEEjlwE)
Conteúdos Alura:
Artigo O que é JSON? ([Link]
Curso Curso MySQL e JSON: persistindo JSON de maneira eficiente

([Link]

Design Patterns:
Na engenharia de software, um "padrão de projeto" (Design Pattern em inglês) é uma solução
geral e reutilizável para um problema que ocorre normalmente dentro de um determinado
contexto de projeto de software.
Conhecer e aplicar os principais Design Patterns
Conteúdos
Artigo Design Patterns — O que são e quais os benefícios?

([Link]
benef%C3%ADcios-9cd0cfdd6ebf)
Artigo Design Patterns ([Link]
YouTube Matheus Castiglioni: O que são design patterns (padrões de projetos) e para que

servem? ([Link]
YouTube RinaldoDev: Design Patterns - o que são? Por que aprender a utilizar?

([Link]
Conteúdos Alura:
Podcast [Link]: TechGuide - Design Patterns – Hipsters Ponto Tech #347
([Link]
Artigo Design patterns: Breve introdução aos padrões de projeto
([Link]
Podcast [Link]: Design Patterns - Hipsters 206

([Link]
Curso Curso Design Patterns em Java I: boas práticas de programação

([Link]
Curso Curso Design Patterns C# I: boas práticas de programação

([Link]
Curso Curso Design Patterns em PHP: padrões comportamental
([Link]
CursoCurso Design Patterns em PHP: padrões estruturais ([Link]
online-php-design-pattern-estrutural)
Curso Curso Design Patterns em PHP: padrões criacionais ([Link]

online-php-design-pattern-criacional)

Linha de comando - Fundamentos:


CLI é um programa de linha de comando que aceita entradas de texto para executar funções do
sistema operacional.
Conhecer os principais comandos
Conteúdos
Site Microsoft Docs: Como usar argumentos de linha de comando para terminal do Windows
([Link]
YouTube Estevan Maito: Linha de comando básica - 8 comandos mais frequentes - WINDOWS e

LINUX ([Link]
YouTube Ninja do Linux: Comandos básicos da linha de comando do Linux

([Link]
Conteúdos Alura:
Artigo CMD: dicas para trabalhar no prompt do Windows

([Link]
Artigo Como configurar variáveis de ambiente no Windows, Linux e macOS
([Link]
Site Primeiras aulas do Curso Windows Prompt: Trabalhando na linha de comando
([Link]
Curso Curso Windows Prompt: Trabalhando na linha de comando

([Link]
Curso Curso Terminal: aprenda comandos para executar tarefas

([Link]
Cloud - Fundamentos:
Cloud, ou computação em nuvem é a distribuição de serviços de computação pela Internet
usando um modelo de preço pago conforme o uso. Uma nuvem é composta de vários recursos
de computação, que abrangem desde os próprios computadores (ou instâncias, na terminologia
de nuvem) até redes, armazenamento, bancos de dados e o que estiver em torno deles. Ou seja,
tudo o que normalmente é necessário para montar o equivalente a uma sala de servidores, ou
mesmo um data center completo, estará pronto para ser utilizado, configurado e executado.
Conhecer a diferença entre IaaS, PaaS e SaaS
Conhecer os maiores provedores de cloud
Especializar-se em algum provedor
Conteúdos

Computação em nuvem ([Link]


Artigo

em-nuvem-515930304cf9)
Artigo O que é cloud? ([Link]

991109e708c6)
YouTube Gabs Ferreira: Por que investir e estudar cloud? ([Link]

v=Z45BTNeZ1l0)
YouTube Andre Iacono: O que é MICROSOFT AZURE? Qual Certificação começar em 2022?

([Link]
YouTube AWS: O que é a AWS? ([Link]
YouTube O que é Google Cloud e por que aprender?

([Link]
Artigo AWS vs Google Cloud vs Azure: o que cada um tem de melhor?

([Link]
melhor-52107174f7b7)
YouTube Código Fonte TV: Azure (A plataforma Cloud da Microsoft)

([Link]
YouTube Mundo da Cloud: AWS do Zero ao Expert ([Link]

v=HiBCv9DolxI&list=PLtL97Owd1gkQ0dfqGW8OtJ-155Gs67Ecz)
Conteúdos Alura:
Podcast [Link]: TechGuide - Fundamentos Cloud – Hipsters Ponto Tech #348
([Link]
Artigo Cloud: o que é, História e Guia da computação em nuvem
([Link]
Podcast [Link]: Uma jornada Para o Cloud - Hipsters Deep Dive 005

([Link]
Podcast [Link]: Histórias do Cloud - Hipsters 04

([Link]
Artigo Heroku, Vercel e outras opções de cloud como plataforma
([Link]
Artigo AWS: Guia sobre o que é Amazon Web Services, seus Serviços e Certificações
([Link]
Artigo Terraform: criando máquinas na Azure ([Link]

maquinas-na-azure)
YouTube Alura: O que é cloud? ([Link]
YouTube Alura: AWS, Google Cloud e Azure: Por onde começar? | [Link]

([Link]
YouTube Alura: Certificação em Cloud: Azure, AWS, Google | [Link]

([Link]
Curso Formação Começando em Cloud Computing ([Link]

computing)
CursoFormação Amazon Web Services ([Link]
services)
Curso Formação Google Certified Associate Cloud Engineer
([Link]
Curso Formação Certificação AWS Certified Cloud Practitioner

([Link]
Curso Formação Containers com AWS ECS e EKS ([Link]

containers-aws)
Curso Formação Google Cloud Platform ([Link]
Curso Formação Certificação Google Certified Associate Cloud Engineer

([Link]
Curso Formação Azure ([Link]
Curso Formação Certificação AZ-900: Microsoft Azure Fundamentals
([Link]

SOLID:
O Solid possui cinco princípios considerados como boas práticas no desenvolvimento de
software que ajudam os programadores a escrever os códigos mais limpos, separando as
responsabilidades, diminuindo acoplamentos, facilitando na refatoração e estimulando o
reaproveitamento do código.
Conteúdos
Artigo Princípios de S.O.L.I.D em C# — Guia prático

([Link]
pr%C3%A1tico-cbb1e6584284)
YouTube Filipe Deschamps: SOLID fica fácil com Essas Ilustrações

([Link]
YouTube Central dotNET: Princípios de SOLID com C# ([Link]

v=iU4BMUcjg8g)
Felipe Pinheiro - Tech: Princípios SOLID, o que é DIP? ([Link]
YouTube

v=q0BGgQJcp7w)
YouTube Dev Eficiente: SOLID - Uma reflexão sobre o Princípio da responsabilidade única
([Link]
Conteúdos Alura:
Artigo SOLID: o que é e quais os 5 princípios da Programação Orientada a Objetos (POO)

([Link]
Podcast SOLID: Código bom e bonito - Hipsters Ponto Tech 219

([Link]
tech-219-a649)
YouTube Alura: Clean Code e Solid ([Link]
Curso Curso C#: aplique princípios SOLID ([Link]

principios-solid)
Curso Curso Boas práticas de programação: melhore o código de uma API Java

([Link]
Curso Curso SOLID com PHP: princípios da programação orientada a objetos

([Link]
Curso Curso iOS: escrevendo código de qualidade com SOLID em Swift
([Link]
Curso SOLID com TypeScript: aplicando boas práticas em orientação a objetos
([Link]
Curso Formação Boas práticas em C# ([Link]

sharp)
Curso Formação Boas práticas em PHP ([Link]
php)
Curso Formação Boas práticas em Java ([Link]
java)
Livro Casa do Código: Desbravando SOLID - Práticas avançadas para códigos de qualidade
Site

em Java moderno ([Link]


YouTubeCodandoTV(Rods): SOLID e o 'D' do Principio da Inversão de Dependência usando a
Injeção de Dependência para ajudar ([Link]

Clean Architecture:
A Clean Architecture (Arquitetura Limpa) é uma forma de desenvolver software, de tal forma que
apenas olhando para o código fonte de um programa, você deve ser capaz de dizer o que o
programa faz.
Conteúdos

ArtigoDescomplicando a Clean Architecture ([Link]


clean-architecture-cf4dfc4a1ac6)
YouTube Como DEV ser!: Entenda CLEAN ARCHITECTURE de uma vez por todas!

([Link]
YouTube Full Cycle: O que é Clean Architecture ([Link]

mnOtQg)
YouTube CodandoTV(Rods) - Simplificando o Clean Architecture +MVVM na sua aplicação mobile

- Guia Completo ([Link]


Conteúdos Alura:

SiteClean Architecture (Arquitetura Limpa) - O que é? ([Link]


mais/clean-architecture-arquitetura-limpa-o-que-e--c204)
Podcast [Link]: Clean Architeture - Hipsters Ponto Tech 254
([Link]
YouTube Alura: Arquitetura de sistemas ([Link]
SitePrimeiras aulas do curso Java e Clean Architecture: descomplicando arquitetura de
software ([Link]
Curso Curso Java e Clean Architecture: descomplicando arquitetura de software
([Link]
Curso Curso PHP e Clean Architecture: descomplicando arquitetura de software

([Link]
Firebase:
O Firebase é uma plataforma de desenvolvimento de aplicativos Backend-as-a-Service (BaaS)
que fornece serviços de backend hospedados, tais como banco de dados em tempo real,
armazenamento em nuvem, autenticação, relatórios de falhas, aprendizado de máquina,
configuração remota e hospedagem para seus arquivos estáticos.
Entender como Instalar o Firebase
Conhecer a documentação do Firebase
Conhecer as ferramentas do Firebase disponíveis
Conteúdos
Site Produtos do Firebase | Firebase ([Link]
Site Casos de Uso do Firebase | Firebase ([Link]
Site Adicionando o Firebase ao App Flutter | Firebase Docs
([Link]
Site Adicionando o Firebase ao seu projeto Android | Firebase Docs

([Link]
YouTube Firebase: Começando no Firebase com Flutter - Firecasts (inglês)

([Link]
YouTube Prof. Diego Antunes: Instalação do Firebase no Flutter em 2022 (FlutterFire e Realtime

Database) ([Link]
Site Precificação do Firebase | Firebase ([Link]
Conteúdos Alura:
Artigo Integrando App Android com o Firebase Cloud Messaging

([Link]
Artigo Tratando notificações recebidas do Firebase no Android

([Link]
Artigo Autenticando com a conta Google no Android utilizando o Firebase Authentication
([Link]
Artigo Flutter: Tratamento de exceções com Firebase Crashlytics
([Link]
YouTube Alura: Primeiros passos em Cloud Firestore no Flutter (Parte 1) | #AluraMais

([Link]
YouTube Alura: Primeiros passos em Cloud Firestore no Flutter (Parte 2) | #AluraMais

([Link]
YouTube Alura: Registro de exceções no Firebase Crashlytics | #AluraMais

([Link]
Curso Curso Flutter: Push Notifications com Firebase Cloud Messaging
([Link]
Curso Formação Firebase com Android ([Link]

Habilidade Auxiliar: UX & Design


Material Design:
Material Design é um sistema de design de código aberto do Google, onde ele te passa
componentes com determinados padrões de uso e certa personalização para seus apps.
Fundações de experiência de usuário
Personalizar seus componentes
Layouts adaptativos
Conteúdos
Site Material 3 - Comece aqui (inglês) ([Link]
Site Fundações do Material 3 (inglês) ([Link]
Site Material 3 - Estilos (inglês) ([Link]
Site Material 3 - Componentes (inglês) ([Link]
Conteúdos Alura:

Artigo Como usar as novas cores dinâmicas no Material Design 3 do Android

([Link]

Design System:
Um Design System (sistema de design) é uma coleção de componentes reutilizáveis, guiados
por padrões claros, que podem ser colocados juntos para construir aplicações.
Criar e manter bibliotecas que serão consumidas e usadas como padrão para a construção de
um projeto
Design tokens
Estilos fundamentais
Construção de componentes
Microinterações
Documentação
Conteúdos
ArtigoDesign System: o que é e quais os benefícios? ([Link]
partner/design-system-o-que-e-438773dd811)
Artigo Afinal, o que é Design System? ([Link]

design-system-448c257b0021)
Artigo O que são Design Tokens ([Link]
Caio Gonzalez: O que é Design System? / Guia para começar o seu próprio Design
YouTube

System ([Link]
Conteúdos Alura:
Artigo O que é Design System? ([Link]
Design Systems: exemplos práticos ([Link]
Artigo

exemplos-praticos)
YouTube Alura: Design System & Style Guide ([Link]
YouTube Alura: Design Systems (com Charles Assunção) ([Link]

v=MLGFctEtmYQ)
Podcast [Link]: Design Systems - Hipsters 170
([Link]
Podcast [Link]: Design System – Layers ponto tech 36

([Link]
Curso Design System: definindo estilos e tokens ([Link]

system-definindo-estilos-tokens)
Curso Design System: projetando e construindo componentes

([Link]
Curso Design System: documentando um design system

([Link]
Desafio Experimente o que é ser um(a) profissional de Ux

([Link]

Sistemas de cores:
Definir uma paleta de cores que faça sentido para determinada interface
Conteúdos
Artigo Cores em UI: Um Guia Rápido Para Usar em Seus Projetos

([Link]
31ccffe3e16b)
Artigo A Psicologia das cores e sua relação com o UX Design ([Link]

psicologia-das-cores-e-sua-rela%C3%A7%C3%A3o-com-o-ux-design-af02460639cd)
YouTube [Link]: Aplicação de Cores - Princípios do UI ([Link]

v=C_VhzEyqT6U)
Conteúdos Alura:
Curso Curso Cores para Designers: escolhendo e trabalhando com cores em um projeto

([Link]
Site Primeiras aulas do curso Cores: sistemas básicos e paletas
([Link]
Cores: sistemas básicos e paletas ([Link]
Curso

da-cor)
Curso Curso Design editorial: criação de materiais gráficos ([Link]

online-design-editorial)

Como usar fontes:


Escolher a fonte mais adequada para determinado projeto
Conteúdos

ArtigoVocê sabe usar tipografia em UI Design? ([Link]


school/voc%C3%AA-sabe-usar-tipografia-em-ui-design-9ce4ccdbab43)
Artigo As 20 fontes mais usadas pelos designers gráficos
([Link]
38a6c121dfb)
Artigo Usando ícones SVG como fontes com o IcoMoon
([Link]
YouTube Nadine Fronza: Como escolher a melhor fonte para seu projeto
([Link]
YouTube Thiago Abreu: Como Escolher Fontes para um Trabalho de Design

([Link]

Conteúdos Alura:
Artigo 10 tipografias gratuitas para um design incrível ([Link]

tipografias-gratuitas-design-incrivel)
Site Tipografia para Web ([Link]
Site Primeiras aulas do curso Tipografia: conhecendo o que há por trás dos tipos

([Link]
Curso Curso Tipografia: conhecendo o que há por trás dos tipos

([Link]
Curso Curso Design editorial: criação de materiais gráficos ([Link]

online-design-editorial)

Design Responsivo:
Ajustar suas páginas para o tamanho da tela do usuário
Media queries
Conhecer o conceito de Mobile first
Conteúdos
Artigo Design responsivo para leigos ([Link]

leigos-888c9d0dfdaf)
Artigo Entendendo as diferenças entre design responsivo, adaptativo e mobile-first
([Link]
responsivo-adaptativo-e-mobile-first-ea3c61fc9181)
Artigo Web Design Responsivo — O Que É e Como Usá-lo

([Link]
us%C3%A1-lo-12477b168fc7)
YouTube MobGeek: O que é Design Responsivo? ([Link]

v=WXfYtneJZzI)
YouTube Ralf Lima: Mobile First e Desktop First ([Link]

v=oqggJTC3_vA)
Conteúdos Alura:
ArtigoComo fazer Grids e a Responsividade na Web ([Link]
fazer-grids-e-a-responsividade-na-web)
Curso Curso Layouts Responsivos: trabalhando com layouts mobile
([Link]
Curso HTML e CSS: responsividade com mobile-first ([Link]

html-css-responsividade-mobile-first)
Desafio 7 Days of Code: Responsividade ([Link]

Android - Acessibilidade:
Acessibilidade Digital é a eliminação de barreiras na Web. O conceito pressupõe que os sites e
aplicativos sejam projetados de modo que todas as pessoas possam perceber, entender,
navegar e interagir de maneira efetiva com as páginas, incluindo pessoas com necessidades de
acessibilidades, como pessoas com problemas de visão, daltonismo, dificuldades auditivas,
comprometimento motor, deficiência cognitivas e muitos outros tipos de deficiência.
Aumentar a visibilidade do texto
Usar controles grandes e simples
Descrever cada elemento de IU
Conteúdos

Site Documentação Android: Tornar os apps mais acessíveis

([Link]
Site Documentação Android: Princípios para melhorar a acessibilidade do app

([Link]
Site Documentação Android: Testar a acessibilidade do seu app

([Link]
YouTube Chico Rasia: View customizada no Android com Kotlin, parte 3: Acessibilidade com

Talkback ([Link]
YouTube CodandoTV: Acessibilidade usando JetPack COMPOSE com Gabriel Moro
([Link]
SiteSlides sobre Desenvolvimento Android - by Moro ([Link]
about-android-development/blob/main/README_pt-[Link]#acessibilidade-%EF%B8%8F)

Figma - Fundamentos:
Figma é uma aplicação web colaborativa para design de interfaces. O conjunto de recursos do
Figma se concentra na interface do usuário e no design da experiência do usuário, com ênfase
na colaboração em tempo real, utilizando uma variedade de editores de gráficos vetoriais e
ferramentas de prototipagem.
Criar layouts de páginas e componentes

Conteúdos
Site Figma Básico - Primeiros passos com Figma

([Link]
Artigo O que é o Figma e por que usar ele? ([Link]

figma-e-por-que-usar-ele-a71fbf1dbdd8)
Artigo Entenda o que é e como usar o Figma para criar designs

([Link]
YouTube Marco Bruno: Como usar o Figma! ([Link]
YouTube 4 Exemplos de Componentes interativos no Figma ([Link]

v=mGL3jrY-OBc)
Conteúdos Alura:
Artigo Figma: o que é a ferramenta, Design e uso ([Link]
Site Como Front-End utiliza o Figma - Alura+ ([Link]

mais/como-front-end-utiliza-o-figma-c858)
Artigo Top 5 plugins no Figma para trabalhar com Design System

([Link]
Artigo 5 plugins essenciais que você precisa ter no seu Figma

([Link]
Artigo10 truques incríveis e pouco conhecidos no Figma ([Link]
truques-incriveis-pouco-conhecidos-figma)
Podcast [Link]: Figma do Design ao Código 03
([Link]
03-a726)
YouTube Como fazer estilos locais mais rapidamente no Figma?
([Link]
Curso Formação Figma ([Link]

TechGuide - Alura
Alura, PM3 e FIAP
O [Link] é um projeto open source

Você também pode gostar