Esqueleto Base Projeto KMM
Entenda como um projeto kotlin multiplatform Mobile (KMM) é estruturado e faça o clone do projeto base no github.
Estrutura Projeto KMM
Um projeto KMM tem uma estrutura bem definida e visa compartilhar código (lógica de negócio) e em alguns casos até mesmo as views (visualizações) conseguem ser compartilhadas. A imagem a seguir visualiza as camadas de um projeto KMM:
Camadas
Em um cenário ideal, nós teríamos que definir apenas as plataformas e o framework geraria os binários para cada alvo (target). Na prática não funciona bem assim, e o que vemos na imagem 3 já ficamos mais próximos da realidade.
Código de Plataformas
Na imagem 3 continuamos tendo a lógica de negócio centralizada no bloco roxo, porém agora temos uma inversão de dependências, onde o bloco roxo acessa implementações especificas de cada plataforma, que o próprio KMM não consegue prover. KMM compartilha o código de duas maneiras: Através de Interfaces nativas em kotlin e com o mecanismo de expect/actual, como vemos na imagem a seguir.
Dependências Cíclicas, Nullpointer Exceptions?
Você deve estar se perguntando como isso é possível e se não deveria estourar dependências cíclicas ou até mesmo nullpointer exceptions, já que tudo parece estar ligado em circuito fechado, não é mesmo?
Isso só é possível, porque quando o binário é gerado e instalado nas plataformas, a primeira coisa que é lançada, são os próprios aplicativos (plataformas). Então neste caso, se a lógica de negócio precisar de algo da plataforma para funcionar corretamente, a mesma já estará rodando e proverá o que lhe for requisitado.
Binário duplicado para iOS e Android?
Não! Na verdade KMM se encarrega de apenas usar o que cada plataforma precisa ao gerar os respectivos binários.
Você está prestes a criar um projeto KMM na sua empresa?
Veja na prática como se faz!
Agora que você já sabe como esboçar e entende a estrutura de um projeto KMM, veja como clonar um projeto esqueleto (base) para um projeto real usando kotlin multiplatform mobile. Neste vídeo, te explico todo o passo-a-passo:
Quer mais conteúdo assim?
Me siga, se você gosta desse tipo de conteúdo técnico didático e feito com muito carinho. ❤️
Você me encontra no 🐦twitter, 🦑 Github ou no 📺 Youtube onde tenho um curso gratuito “Do zero ao certificado Android”, outro chamado “Resoluções a problemas comuns Android” e Android Jetpack Compose disponíveis 0800 para você.
Para não perder nenhum conteúdo, inscreva-se nesse techblog clicando aqui: