Quero ser programador Android, o que estudar?

SOUTH SYSTEM
6 min readJul 25, 2021

Porque mudar para mobile?

Programação mobile vem sendo tendência nos últimos anos no mercado de TI. Com a pandemia a procura por profissionais de tecnologia se acentuaram como um todo. Mas percebi que as vagas mobile tiveram um aumento fora da curva. Principalmente no Brasil, onde o acesso a um computador ainda não é realidade para todos e o celular é a porta de entrada no mundo online para muito dos brasileiros. E quando se fala em mobile, se fala em apps!

Pernalonga e Patolino defendendo IOS ou Android com cartazes.

Porque Android ?

Apesar de que programar para IOS seja provavelmente legal e rentável, existe uma barreira muito grande para esse aprendizado. O nome disso se chama Brasil em crise. Passamos por um momento em que a crise/pandemia, a escassez de chips no mercado, e principalmente o valor do dólar perante ao real fazem o preço de um device com MacOs ser absurdamente caro(não que um dia já foi barato). E sim, programar para IOS exige um device com MacOS para o aprendizado. E apesar de ter linguagens híbridas que funcionam bem para programar para as duas plataformas em um único código, no final elas também precisariam de um MacOS para “buildar” suas versões para IOS. Além do mais nosso robozinho verde está presente na maioria absoluta dos devices do mundo inteiro, então programar para Android é mais acessível e atinge uma fatia maior do mercado em números de usuários, conforme gráfico abaixo.

Java vs Kotlin?

Na sequencia irei falar um pouco em como aprender a progamar para Android nativamente, usando a linguem de programação Kotlin! Sim esqueça o Java para Android. Apesar do seu conhecimento em Java ser útil, desde 2019 a Google orienta e estimula o uso de Kotlin para programar nativamente no Android.

Lets Go

Se você já é programador ou se interessa por esse mundo já deve ter ouvido que a lógica de programação é fundamental no aprendizado, reafirmo essa verdade!

Kotlin é uma linguagem com o paradigma de orientação a objetos, se você já conhece como funciona POO, é exatamente como funciona a linguagem Kotlin, assim como a maioria das linguagens atualmente. Caso você não saiba o que é programação orientada a objetos, recomendo fortemente estudar esse paradigma.

E a ultima coisa do kit básico antes de entrar de fato no mundo Android é saber fazer o versionamento GIT, usado na maioria dos projetos hoje, é uma ferramenta essencial para trabalho em equipe e manutenção do código.

Android studio e Emulador

Além de apreder a linguagem Kotlin, acho fundamental você dominar suas ferramentas de trabalho, que serão o Android Studio(IDE oficial para desenvolvimento Android) e o Emulador do Android, que já vem embutido no AS, basta configurar. Recomento fortemente aprender a instalar e configurar corretamente essas duas ferramentas. Apesar do emulador ser opcional e pesar um pouco em computadores mais fracos. Nesse caso recomendo a utilizar seu próprio android para testar seus apps. Ainda sim você terá que aprender a habilitar as opções de desenvolvedor no device.

Android SDK

Todo programador Android deve entender como funciona o sistema operacional que ele irá programar seus apps. Então entender os conceitos nativos do SO irá ajudar muito, mesmo que se tenha frameworks e bibliotecas que ajudam a abstrair um pouco desses conceitos. Vai uma lista de assustos que seria bom ter total conhecimento:

  • Activity
  • Fragment
  • XML
  • Android lyfecycle.
  • Resources
  • Styles
  • Drawables
  • Fonts
  • Android Manifest
  • Permissions
  • Intents
  • Services

Componentes de Tela

Não menos importante um programador android tem que saber o que usar por exemplo quando tem que mostrar uma lista de produtos na tela, ou qual componente se utiliza para a tela mostrar uma imagem, então seguem componentes que devem ser estudados e treinados muito para que se domine o uso deles:

  • Textfield
  • Edittext
  • Recyclerview
  • Button
  • Gridlyout
  • ProgressBar
  • ViewPager
  • ImageView
  • Toolbar

Saiba que esses são somentes os mais usados, existem inúmeros outros componentes de UI que podem te ajudar a fazer aquela tela bonita que se deseja.

Buscando dados remotos e salvando localmente.

No Android temos um número limitado de espaço de armazenamento, então muitas coisas são buscados “na hora” ao abrir uma tela ou ao clicar em um botão. Desta forma é primordial saber fazer seu app buscar dados de uma API ou de qualquer local via internet. Saber os conceitos basicos de requisições HTTP é necessário, como metodos POST, GET , PUT, DELETE.

Apesar de o Android ter libs nativas para poder fazer isso como a HttpURLConnection. Recomendo a ler e aprender sobre a biblioteca Retrofit. Ela facilita bastante o “manejar” dessas chamadas e eu nunca trabalhei em um projeto em que ela não era usada. Para manipular esses dados em forma de objetos do Kotlin, a biblioteca Gson será de muita serventia.

Agora para salvar dados localmente, temos diversas formas e tudo dependerá do dado e como você quer que fique salvo, mas nesse tópico recomendo estudar SharedPreferences e Room (que é uma abstração do SQLite).

Multithreading

Saber multithreading é essencial para seu app não ficar travado enquanto busca algo na internet ou até localmente, para isso é bom estudar AsyncTasks e WorkManager que são nativas no Android. Além do mais temos na programação reativa uma ferramenta fundamental para contruir apps mais bonitos e fluídos. O RXJava e Coroutines são os carros chefes nesse quesito, eu daria preferência para o Coroutines que é uma componentes nativo da linguagem Kotlin. Junto com essses temas entramos na parte de LiveData, Flow e DataBinding que irão ajudar as suas telas “se atualizarem” reagindo a algum evento automaticamente.

Injeção de dependencias e arquitetura.

Um elemento que vai elevar muito o nível de sua programação no android é dominar todos os elementos anteriores colocando conceitos do SOLID no seu projeto. Hoje em dia a Google recomenda o uso do padrão MVVM (Model-view-ViewModel), porém não se limite a isso, estude sobre MVP, MVI, MVC. Talvez alguma possa fazer mais sentido em determinados projetos. Aplicar uma arquitetura limpa sem injeção de dependências eu diria que é quase impossível. Então estudar Koin e Dagger 2(mais recentemente o Hilt) são fundamentais. Novamente estude as vantagens e desvantagens entre os dois e escolha o que melhor se aplica ao seu projeto.

Não esqueça os testes!

No Android dividimos os testes em instrumentados e não instrumentados. Os testes não instrumentados são aqueles testes que não precisam rodar num device físico ou emulador, ou seja, não dependem do android SDK para testar, exemplo disso são os testes unitários. Já testes instrumentados são aqueles testes que vão precisar de um emulador ou device físico, já que testam a aplicação nas camadas mais de integração e de UI. Aqui vai uma lista de ferramentas que você pode estudar sobre:

Processo de distribuição do aplicativo.

Entender o processo de distribuição do aplicativo na Play Store é fundamental, então aprender como funciona o Google Play Console, o que é um app Bundle, e conhecer sobre ferramentas de automação desse processo é fundamental quando não se quer ter toda essa dor de cabeça toda vez que lançar uma nova versão do app. Ferramentas de CI/CD como Bitrase, Github Actions, Fastlane entre outros irão ajudar muito nesse processo.

Vá além!

No universo android da para contruir muita coisa, e saber utilizar o hardware com maestria pode te colocar a frente em certos projetos. Então estudar como o SO se comunica com a camera, bluetooth, NFC, GPS entre outros componentes de hardware do celular são essenciais em projetos que utilizam alguma dessas features.

O caminho é longo mas é prazeroso. Acredito que nesse artigo abordei os principais tópicos de estudo Android. E conhecendo tudo o que abordei (o que não é pouco), aprender alguma ferramenta nova ou alguma coisa específica que não foi mencionada aqui é bem mais fácil.

Qualquer dúvida, crítica ou sugestão podem me procurar no Linkedin, ou usar o espaço dos comentários do artigo.

Referências:

https://developer.android.com/jetpack

Originally published at https://medium.com on July 25, 2021.

--

--