Sviluppo app mobile con Kotlin Multiplatform

Front-end Engineering Solution

contesto

Nel mondo dello sviluppo mobile, gli sviluppatori si trovano spesso a dover scegliere tra approcci nativi e ibridi per creare applicazioni. Lo sviluppo nativo, che prevede l’uso di linguaggi e strumenti specifici per ciascuna piattaforma (come Swift per iOS e Kotlin per Android), garantisce prestazioni ottimali e accesso completo alle funzionalità del dispositivo. Tuttavia, questo approccio implica un maggiore sforzo in termini di tempo e risorse, dato che bisogna scrivere e mantenere codice separato per ogni piattaforma.

D’altra parte, i framework ibridi, come React Native, Flutter o altre soluzioni, cercano di ridurre questo overhead, permettendo di scrivere una singola code base. Sebbene questa soluzione offra una maggiore efficienza e una gestione centralizzata del codice, può comportare compromessi in termini di performance e flessibilità.

Kotlin Multiplatform (KMP) rappresenta una via di mezzo tra questi approcci, proponendo una soluzione che consente di scrivere una codebase condivisa per diverse piattaforme senza sacrificare le prestazioni o l’accesso nativo alle API del dispositivo. Permette di condividere codice tra diversi target (come Android, iOS, web e desktop) utilizzando Kotlin, e riduce significativamente il tempo e lo sforzo necessari per sviluppare e mantenere applicazioni multipiattaforma.

kotlin multiplatform

Punti critici

  • Duplicazione del codice: La scrittura di un’app nativa richiede la duplicazione delle logiche di business e relativi test, creando potenziali bug e incidendo nel mantenimento
  • I competitor ibridi vincolano lo sviluppatore a utilizzare i loro strumenti e linguaggi e non garantiscono aggiornamento e piena compatibilità con hardware e funzionalità native
  • I competitor ibridi potrebbero essere dismessi e richiedere la riscrittura dell’intera applicazione (vedi Xamarin Forms)
  • Le prestazione dei competitor sono ritenute inferiori al nativo
  • L’effort di sviluppo delle applicazioni native è superiore a quello delle applicazioni ibride

soluzione

Creando una soluzione in Kotlin Multiplatform è possibile condividere tutta la logica di tutta una applicazione escludendo la UI, che può essere scritta nativamente. 

Questo permette di mantenere continuità con la user experience che l’utente ha usualmente con il sistema operativo di riferimento, customizzare il design scegliendo se utilizzare componenti nativi o ad hoc, e utilizzare le ultime tecnologie native a disposizione. Consente inoltre di mantenere la compatibilità, così come recuperare e riutilizzare componenti da e per differenti applicazioni native.

Il codice viene compilato per la piattaforma target senza intermediario, escludendo l’overhead degli interpreti. Per iOS, il codice generato è un framework in Objective C e, di recente, anche in Swift (funziona beta), che può essere estrapolato e utilizzato come libreria, importandolo nei progetti d’interesse.

Un’unica codebase per la parte business riduce gli errori della doppia implementazione in differenti piattaforme e rende tutto altamente testabile: è infatti possibile scrivere unit test – integration test e e2e test – ed eseguirli nella codebase comune.

Non esistono vincoli al supporto delle librerie native, poiché è possibile demandare l’implementazione alla parte nativa qualora ci fossero difficoltà con l’integrazione KMP.

vantaggi

  • Condivisione del codice: Mantenere una codebase comune tra piattaforme diverse, riducendo la duplicazione e semplificando lo sviluppo
  • Migliore UI/UX: Garantire esperienze utente uniformi rispettando le specificità delle piattaforme
  • Testabilità del codice: Aumentare rapidamente test code coverage 
  • Migrazione di applicazioni esistenti: Pianificare una migrazione di un progetto nativo Android verso Kotlin Multiplatform
tecnologie e competenze adottate

 

  • Kotlin Multiplatform: per la condivisione della logica di business tra le piattaform e la massimizzazione del riutilizzo del codice e riduzione della duplicazione.
  • Native Development:
    • Kotlin per Android: implementazione dell’interfaccia utente e delle funzionalità specifiche della piattaforma
    • Swift per iOS: implementazione dell’interfaccia utente e delle funzionalità specifiche della piattaforma
    • Garanzia di un’esperienza utente nativa e prestazioni elevate
  • Testing:
    • JUnit: Test unitari e di integrazione
    • XCTest: Test UI 
    • Garanzia di qualità e affidabilità dell’applicazione su entrambe le piattaforme

Vuoi saperne di più in merito ai nostri servizi? Completa il modulo e un nostro consulente ti ricontatterà subito!