Gå till innehåll

Kotlin Multiplatform Mobile Ett intressant tillskott för oss apputvecklare

28 april, 2021

Vad är Kotlin Multiplatform Mobile?

KMM är en multi-plattformsteknik för att skriva kod i Kotlin som kan användas på plattformar som Android, iOS, tvOS, watchOS, macOS. Det kan även köras i Linux och Windows, men i den här artikeln fokuserar vi på de mobila operativsystemen iOS och Android. Innan vi går vidare bör det noteras att Kotlin också används vid backend-programmering och är det idag mest använda språket för native Android-utveckling.

 

Vad delas och vad delas inte?

Affärslogiken delas men inte implementationen av användargränssnittet. Tänk dig en inloggningsskärm: All affärslogik som att validera e-postadressen, anropa servern för att autentisera, lagra sessionsinformation, bearbeta och bestämma om någon varningsruta ska visas med mera kommer att kodas i KMM. UI-elementen däremot; såsom logotyper, textrutor, inloggningsknapp, glömt lösenordsknapp, kommer inte att finnas i KMM utan måste byggas separat för respektive platform. 

 

Fördelar med KMM

Återanvändning av kod

Att återanvända kod innebär flera fördelar: 

1. Mindre tid att bygga samma funktion flera gånger. Majoriteten av utveckling av funktionalitet delas mellan plattformarna

2. Konsekvent implementation av funktionalitet på alla plattformar

3. Enklare att uppnå funktionsparitet över plattformar

 

Flexibilitet

KMM ger oss möjlighet att om det behövs utveckla specifik logik för en specifik plattform. Även om det inte är exklusivt för KMM är det en användbar fördel. Jämfört med andra cross-plattformslösningar där tex logiken är skriven i JavaScript, så det kan vara utmanande för JavaScript-utvecklaren att tänka ur mobilappens perspektiv och använda funktionaliteten i mobilen fullt ut. Men med KMM är det möjligt att det är en van native-utvecklare som skriver den gemensamma logiken vilket innebär att de har mobilappens utvecklingsperspektiv redan när de skriver den plattformsspecifika logiken.

 

God riskkontroll / Minimerat spill

De nuvarande cross-plattformslösningarna säger sig ofta inte låsa in organisationen i ett teknikval, men när mycket resurser har lagts in i en teknikstack är det mycket svårt att flytta sig bort från den. Säg att vi startar ett projekt i React Native och det börjar mycket bra eftersom det är en enkel MVP. Med åren växer projektet i en sådan utsträckning att React Native inte passar bra längre. Det mest effektiva sättet i det läget är att skriva om apparna i native (Android och iOS). Men detta är ett arbete som tar minst 1,5 gånger den investering som redan gjorts eftersom vi nu har två målplattformar att bygga emot. 

 

Detta scenario undviker vi med KMM då det som utvecklats kommer att vara 100% användbart för Android (kom ihåg att Kotlin är språket för native Android-utveckling). Vidare är i KMM användargränssnittet redan utvecklat för/i iOS så vi behöver bara skriva om logik specifik för iOS. Istället för 1,5 gånger grundinvesteringen skulle vi förmodligen behöva bara 0,25 gånger tiden att gå från KMM till native Android / iOS. Naturligtvis är alla projekt olika och tidsestimaten skall ses som genomsnittligt baserat på vår mobilutvecklingserfarenhet. För att förstå vilken bakgrund Mobile Interaction har av apputveckling så kan du läsa mer om dem under projekt.

 

Testtäckning och förbättrad kvalitet 

Även i de mest väl underhållna projekten är testtäckning och kvalitetsarbete utmanande att få loss nödvändigt tid till. Med KMM kan den tid som behövs nästan halveras eftersom all affärslogik finns på ett ställe, vilket ökar möjligheten att arbeta proaktivt med kvalitet. 

 

Mer integrerade team och mer innovation inom team

Med Kotlin native har vi mer integrerade team eftersom både iOS- och Android-utvecklare arbetar i samma team. Detta ger alla utrymme att utforska den andra plattformen utan att behöva avstå från sin tidigare erfarenhet, och team-innovationer är mer tillgängligt eftersom utvecklare nu får utveckla och testa sina egna idéer på alla plattformar.

 

Nackdelar

1. Om ditt projekt bara har en mål-plattform kan det vara överarbete att välja KMM. Om den specifika plattformen är Android rekommenderas det ändå att börja med KMM så att eventuell skalning till andra plattformar är lätt att introducera senare.

2. KMM är en ung teknikstack. Online-communityn är inte lika stor som nativeutveckling eller andra mer etablerade cross-platformtekniker.

 

Kotlin Multiplatform Mobile och framsteg inom iOS och Android

De senaste åren har mycket spännande hänt inom mobilutveckling med exempelvis SwiftUI och Compose som inneburit paradigmskifte i hur appar skrivs. KMM säger redan idag att det kommer ha stöd för de nya UI-ramverken, särskilt när det är helt produktionsfärdigt, men i dagsläget saknas full kompatibilitet. 

 

Det vi måste komma ihåg är att apputveckling inte är ett helt igenom teknikorienterat projekt. Det finns andra viktiga aspekter som time to market, budgetar, stöd för flera plattformar, funktionskonsistens och funktionsparitet över plattformar som är mycket viktiga för affären. En samlad bedömning av alla viktiga faktorer utgör i allmänhet bästa beslutsunderlaget för ditt projekt. 

 

Hur mycket tid sparas med hjälp av Kotlin multi-plattform?

Varje projekt är unikt, men för de flesta projekt som har både iOS och Android som målplattform bör man kunna spara minst 25% av tiden, vilket får sägas vara en konservativ uppskattning. Medan vi inte kommer att minska tiden för implementationen av användargränssnittet, då detta utvecklas individuellt för varje plattform, kommer den huvudsakliga affärslogiken att delas. Testautomatiseringstiden kommer också att minskas med cirka 50%. 

 

Hur används det idag och av vem?

Det här är några av de företag som redan finns på Kotlin Multiplatform Mobile:

Space av Jetbrains, VMware, Target, PlanGrid, CashApp, Careem, Quizlet och SuperAwesome

 

 

Tack för att du läser den här artikeln. Om du gillade det du läste så dela det gärna i social medier och håll utkik efter de kommande delarna av artikelserien om KMM.

Tillbaka till nyheter

Se flera nyheter