Olá, estudante! Tudo bem?
Depois de revisarmos os conceitos de Programação Orientada a Objetos na lição anterior, nesta lição, você irá aprender como o Kotlin Multiplatform Mobile (KMM) possibilita o desenvolvimento de aplicativos para Android e iOS com uma única base de código. Com essa tecnologia, é possível reutilizar a maior parte do código entre as plataformas, otimizando tempo e recursos.
O objetivo desta lição é apresentar a você como o Kotlin Multiplatform Mobile (KMM) pode ser utilizado para compartilhar a lógica de negócio de um aplicativo, mantendo a experiência nativa em cada plataforma. Ao longo da lição, você aprenderá a entender a estrutura de um projeto KMM, identificar as vantagens da abordagem multiplataforma, comparar a reutilização de código com desenvolvimento separado para cada plataforma e conhecer um exemplo prático de aplicação do KMM.
Ao final da lição, você terá compreendido os conceitos fundamentais do KMM, suas vantagens e desafios, além de como iniciar um projeto multiplataforma. Preparado para essa jornada?
Imagine que uma startup inovadora está lançando um aplicativo para Android e iOS simultaneamente. A demanda por rapidez e eficiência no desenvolvimento é alta, pois a empresa deseja alcançar o mercado o mais rápido possível sem comprometer a qualidade da experiência do usuário.
Durante as conversas para elaboração do projeto, no entanto, a equipe percebe que desenvolver versões separadas para cada plataforma dobraria o tempo e os custos de produção, além de tornar a manutenção mais complexa, exigindo alterações duplicadas e aumentando o risco de inconsistências entre as versões. Diante desse desafio, como garantir um desenvolvimento ágil, sem comprometer a experiência do usuário e sem duplicar esforços na criação e manutenção?
Para solucionar esse problema, o Kotlin Multiplatform Mobile (KMM) se apresenta como uma alternativa viável, permitindo compartilhar a lógica de negócio entre Android e iOS, reduzindo a duplicação de código e acelerando o desenvolvimento. Enquanto a interface do usuário permanece nativa, garantindo uma experiência adaptada a cada plataforma, funcionalidades, como chamadas de API e regras de negócio, são unificadas. Isso torna o aplicativo mais coeso, modular e eficiente, permitindo um lançamento mais rápido, redução de custos e manutenção simplificada.
Vamos aprender mais sobre isso?
Agora, vamos entender como o Kotlin Multiplatform Mobile funciona na prática? Para isso, utilizaremos como exemplo a TechFit, uma empresa fictícia que desenvolve aplicativos para monitoramento de atividades físicas e alimentação saudável. Seu mais novo projeto é um aplicativo de acompanhamento de treinos e nutrição, porém ele precisa ser lançado para Android e iOS, simultaneamente.
Inicialmente, a equipe considerou criar um aplicativo separado para cada sistema, mas percebeu que isso demandaria muito tempo e recursos. Além disso, as regras de negócio do aplicativo (como cálculo de calorias, estatísticas de treino e recomendações de dieta) precisariam ser implementadas duas vezes, uma em Kotlin para Android e outra em Swift para iOS.
Diante desse cenário, a equipe optou por utilizar o Kotlin Multiplatform Mobile (KMM). Com essa abordagem, eles puderam compartilhar toda a lógica do aplicativo, mantendo apenas a interface separada para cada plataforma. Agora, a TechFit tem um aplicativo modular, escalável e eficiente, garantindo a mesma qualidade para usuários de Android e iOS!
Sendo assim, nesse exemplo, podemos observar como o Kotlin Multiplatform Mobile (KMM) proporcionou à TechFit uma solução eficiente e econômica, permitindo a criação de um aplicativo de alto desempenho para Android e iOS, sem a necessidade de duplicação de código. Observe que essa abordagem acelera o desenvolvimento e simplifica a manutenção do sistema, garantindo uma experiência de usuário consistente e de qualidade em ambas as plataformas.
O Kotlin Multiplatform Mobile (KMM) é um framework desenvolvido pela JetBrains que permite a reutilização de código entre Android e iOS. Com o KMM, a lógica do aplicativo é escrita uma única vez e compartilhada entre as plataformas, enquanto as interfaces gráficas permanecem separadas para garantir a experiência nativa em cada sistema. Essa abordagem maximiza o reaproveitamento de código, o que resulta em uma redução significativa no tempo de desenvolvimento e facilita a manutenção contínua. Segundo Sprinter (2024), ao aproveitar a sintaxe expressiva, a segurança de tipos e os recursos de interoperabilidade do Kotlin, é possível escrever um código compartilhado que pode ser compilado para diversas plataformas, economizando tempo e esforço no processo de desenvolvimento.
Segundo Nagy (2022), o custo de desenvolver um aplicativo em cada plataforma é semelhante a comprar roupas sob medida em vez de roupas prontas em lojas: assim como as roupas prontas, é mais barato optar por aplicativos já disponíveis nas lojas. Portanto, a solução que o KMM oferece é a reutilização de toda a regra de negócios, ou seja, a parte lógica do sistema é uma só, ficando somente as telas dependentes de cada sistema operacional trazendo a melhor experiência “nativa” que você poderia ter. O desenvolvimento nativo refere-se à criação de um produto que está totalmente alinhado com as peculiaridades de cada plataforma, garantindo uma experiência otimizada.
Nagy (2022) usa a analogia de uma pessoa que fala inglês nativamente em comparação com um falante não nativo: as diferenças podem ser sutis ou mais evidentes, dependendo da complexidade das palavras e das habilidades do indivíduo. Da mesma forma, no desenvolvimento híbrido de aplicativos para Android e iOS, as diferenças entre as plataformas podem afetar a qualidade final do produto. Por isso, a abordagem com Kotlin Multiplatform Mobile (KMM) é tão relevante: ela permite que a lógica de negócios seja compartilhada, enquanto as interfaces são adaptadas para garantir uma experiência verdadeiramente “nativa” em cada sistema operacional.
No desenvolvimento de aplicativos móveis para múltiplas plataformas, é essencial equilibrar a reutilização de código com a necessidade de manter a experiência do usuário adaptada a cada sistema operacional. O Kotlin Multiplatform Mobile (KMM) permite exatamente isso, possibilitando o compartilhamento da lógica de negócio enquanto mantém partes específicas para cada plataforma. Dessa forma, você poderá otimizar o tempo de desenvolvimento, reduzindo a duplicação de código e garantindo que funcionalidades essenciais sejam implementadas de maneira consistente entre Android e iOS. A seguir, exploramos como o código é estruturado dentro do KMM para garantir essa integração eficiente.
Código compartilhado (Shared module): contém a lógica de negócio do aplicativo, como manipulação de dados, regras de negócio e comunicação com APIs.
Código específico de cada plataforma (Android e iOS): inclui elementos da interface do usuário e funcionalidades que dependem do sistema operacional, como notificações e acesso ao hardware do dispositivo.
Essa organização permite que as regras de negócio sejam escritas apenas uma vez, enquanto cada plataforma mantém sua própria interface e funcionalidades específicas.
Vamos explorar de forma mais visual como o código KMM funciona? Veja o exemplo da Figura 1, que ilustra um código compartilhado no KMM:
Agora, na Figura 2, veja como você deverá chamar o código específico no caso do Android:
Por fim, na Figura 3, veja como fica o código específico para o sistema operacional iOS:
Perceba que a mesma lógica de negócio está sendo reutilizada em ambas as plataformas, Android e iOS, garantindo maior eficiência no desenvolvimento. Isso significa que regras de validação, processamento de dados e integração com APIs são implementadas uma única vez no código compartilhado, reduzindo retrabalho e facilitando a manutenção do sistema. Dessa forma, enquanto a interface do usuário pode ser ajustada para atender às diretrizes específicas de cada plataforma, a base do aplicativo permanece consistente e unificada.
O KMM surge como uma solução inovadora para o desenvolvimento de aplicativos móveis, permitindo o compartilhamento de código entre Android e iOS sem comprometer a experiência do usuário em cada plataforma. Ao adotar essa abordagem, desenvolvedores podem otimizar esforços, reduzir redundâncias e melhorar a eficiência do projeto. No entanto, como qualquer tecnologia, o KMM apresenta tanto vantagens quanto desafios que devem ser considerados antes da sua implementação. A seguir, exploraremos os principais benefícios e limitações dessa abordagem, destacando seu impacto no desenvolvimento multiplataforma.
Reutilização de código
Reduz o esforço de desenvolvimento, pois grande parte do código é compartilhada entre as plataformas. Sprinter (2024) complementa dizendo que, com o KMM, é possível escrever somente um código e, posteriormente, utilizá-lo em várias plataformas, reduzindo significantemente o tempo e esforço de desenvolvimento.
Menos manutenção
Como há menos código duplicado, a manutenção do projeto se torna mais fácil.
Desempenho nativo
O KMM permite integrar APIs nativas de cada plataforma sem comprometer a performance.
Integração com Kotlin
Como o KMM utiliza Kotlin puro, ele se adapta bem a projetos Android existentes.
Curva de aprendizado
Exige conhecimento tanto em Kotlin quanto em Swift (iOS).
Interfaces separadas
A UI precisa ser implementada separadamente para Android e iOS.
Suporte limitado a algumas bibliotecas
Nem todas as bibliotecas possuem suporte total ao KMM.
De maneira geral, o Kotlin Multiplatform Mobile (KMM) representa uma abordagem inovadora para o desenvolvimento de aplicativos móveis, permitindo criar aplicativos para Android e iOS com uma única base de código. Com o KMM, é possível aumentar a produtividade, reduzir custos e simplificar a manutenção, sem comprometer a qualidade e o desempenho do aplicativo.
Dominar o Kotlin Multiplatform Mobile (KMM) é essencial para que você, futuro técnico em Desenvolvimento de Sistemas, crie aplicativos eficientes para Android e iOS sem duplicar esforços. A capacidade de compartilhar a lógica de negócio entre plataformas reduz o tempo de desenvolvimento, facilita a manutenção do código e otimiza recursos, garantindo um software mais coeso e modular. Agora que você já conhece os fundamentos do KMM, que tal experimentar essa tecnologia e desenvolver seu próprio projeto multiplataforma?
Vamos colocar isso em prática! No case desta lição, foi apresentado um caso em que uma empresa precisava de uma funcionalidade para calcular o gasto calórico diário dos usuários. Em vez de desenvolver esse código separadamente para Android e iOS, a solução adotada foi usar o KMM. Agora, para colocar esse conceito em prática, você escreverá o código para implementar essa funcionalidade. Lembre-se de que essa situação já foi abordada no case anterior e agora é sua vez de aplicar o que foi discutido. Para iniciar essa prática, siga os passos a seguir:
Tenha uma máquina com o Android Studio instalado (esse processo você já conhece da primeira parte da disciplina).
Instale o plugin do KMM no Android Studio.
Crie um novo projeto e escolha o template “Kotlin Multiplatform App” e, em seguida, clique em “Next”.
Digite o nome do projeto, que pode ser como KMM, e clique em “Next” novamente.
Na sequência, clique em “Finish” (Concluir) para criar o projeto.
Agora, siga o passo a passo:
1) No módulo compartilhado (commonMain), implemente em Kotlin o código da Figura 4:
2) Ainda no módulo compartilhado (androidMain), implemente a função da Figura 5:
3) Se você estiver utilizando um macbook ou iMac para programar, também, poderá incluir seu código swift como na Figura 6 a seguir:
Como visto no decorrer desta lição, o Kotlin Multiplatform Mobile (KMM) é uma excelente solução para quem deseja desenvolver aplicativos para Android e iOS sem precisar duplicar código, pois possibilita compartilhar a lógica do aplicativo, garantindo um desenvolvimento mais rápido e eficiente, sem comprometer a experiência do usuário.
Dessa forma, conseguimos criar um aplicativo robusto e escalável, reduzindo custos e tempo de desenvolvimento. Assim como no caso apresentado, você pode aplicar os conceitos do KMM em seus próprios projetos para otimizar o desenvolvimento de aplicativos multiplataforma! Agora, você pode desafiar seus colegas e/ou professores a criar uma activity em Android para exibir sua calculadora de calorias para seus usuários no aplicativo.
NAGY, R. Simplifying Application Development with Kotlin Multiplatform Mobile: Write robust native applications for iOS and Android efficiently. Birmingham: Packt Publishing, 2022.
SPRINTER, C. Kotlin Multiplatform: A comprehensive Guide to Building Android, iOS, macos, windows and more Cross-platform native Applications. [S. l.: s. n.], 2024.