Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$os_meta is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$has_disclaimer is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_blz_affiliation_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskeywords is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_keywordsynonyms is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_previous_publish_date is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_notification_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_indexnow_last_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Skip diventa open source: sviluppo mobile nativo iOS e Android da un’unica codebase Swift

Skip diventa open source: sviluppo mobile nativo iOS e Android da un’unica codebase Swift

Skip è un progetto nato per ridurre la frammentazione nello sviluppo mobile, permettendo di creare applicazioni iOS e Android pienamente native utilizzando Swift come unica fonte. Da oggi è disponibile per tutti come progetto open source e software libero.

Quando si sviluppa un’applicazione mobile, uno dei nodi più complessi resta la duplicazione degli sforzi tra iOS e Android. Due ecosistemi maturi, due linguaggi principali, due framework UI profondamente diversi: una frammentazione che impone costi elevati, tempi di sviluppo più lunghi e una manutenzione spesso ridondante. E abbiamo visto come anche le aziende di alto profilo stiano cercando “scorciatoie”: sviluppare applicazioni Web che funzionano su qualunque piattaforma per evitare i costi derivanti dallo sviluppo di app native.

Skip (documentazione e download) è un progetto nato nel 2023 che ambisce a unificare le piattaforme, senza rinunciare alla loro natura nativa. A differenza delle soluzioni cross-platform tradizionali, Skip propone un approccio radicalmente diverso: usare Swift e SwiftUI come fonte primaria e generare applicazioni pienamente native anche su Android, senza runtime intermedi, bridge o layer interpretativi.

Una visione ambiziosa che, fino a poco tempo fa, era accompagnata da un modello di licenza commerciale. Con l’annuncio ufficiale del passaggio a software completamente open source, Skip apre una nuova fase della sua evoluzione, trasformandosi da strumento di nicchia a potenziale piattaforma condivisa per lo sviluppo mobile moderno (repository GitHub). Aspetto da non sottovalutare, Skip diventa anche software libero, grazie alla licenza GNU LGPLv3, pienamente riconosciuta da FSF, Free Software Foundation.

Cos’è e come funziona Skip

Tradizionalmente, creare applicazioni native per iOS e Android richiede due codebase distinte: Swift/SwiftUI per Apple e Kotlin/Jetpack Compose per Android.

Le piattaforme cross-platform più diffuse (“ibridi” o runtime aggiuntivi) cercano di aggirare questa divisione, ma spesso introducono compromessi in termini di performance, accesso alle API di sistema o esperienza utente.

Skip: sviluppo app Android da codice Swift per iOS

Skip affronta la sfida in modo innovativo: sfrutta Swift e SwiftUI come linguaggio e framework primari, fornendo strumenti che trasformano il codice in output perfettamente nativo su entrambe le piattaforme, senza runtime aggiuntivi o interpreti.

Skip usa un transpiler e una suite di strumenti che generano codice Kotlin e interfacce Jetpack Compose partendo da codice Swift originale, mantenendo piena compatibilità con funzionalità native, performance ottimali e pieno controllo su API specifiche della piattaforma. Questa filosofia garantisce che il risultato non sia solo “simile” nativo, ma “realmente nativo” (!) su entrambi i sistemi operativi.

Architettura di Skip e modello di build multi-target

Dal punto di vista architetturale, Skip si presenta allo sviluppatore come una toolchain integrata nello Swift Package Manager, non come un framework runtime aggiuntivo.

Il nocciolo della soluzione si chiama SkipStone, plugin di build che analizza il pacchetto Swift sorgente e ne produce una rappresentazione equivalente per Android, generando un progetto Gradle completo, codice Kotlin e interfacce Jetpack Compose.

Il processo non avviene a runtime, ma interamente in fase di build, garantendo che l’app Android risultante sia composta esclusivamente da bytecode nativo, senza dipendenze da interpreti, bridge o layer di compatibilità. La semantica del linguaggio Swift è mappata puntualmente su Kotlin, mantenendo coerenza nei modelli di concorrenza, nei tipi di dato e nelle strutture funzionali.

Per lo sviluppatore, l’esperienza è volutamente conservativa e familiare. Il codice applicativo rimane Swift puro, organizzato in moduli SPM standard, con l’aggiunta di annotazioni e convenzioni Skip solo dove strettamente necessario.

Le API specifiche di piattaforma sono gestite tramite la compilazione condizionale e moduli dedicati, consentendo di separare chiaramente la logica condivisa dal codice iOS-only o Android-only.

Sul fronte UI, Skip traduce automaticamente le dichiarazioni SwiftUI in componenti Jetpack Compose equivalenti, senza imporre allo sviluppatore di conoscere Compose per lavorare sul layout condiviso. Il risultato è un flusso di sviluppo in cui Swift resta la “fonte di verità”, mentre Android diventa un target di build nativo, non una piattaforma “adattata”.

Una svolta: Skip è ora open source e distribuito come software libero

Come osservato in precedenza, fino ad oggi Skip richiedeva una licenza commerciale con abbonamento, limitando l’accesso soprattutto a team enterprise o sviluppatori dotati di budget sufficiente.

Diventato software libero, tutti i vincoli di licenza e le chiavi di attivazione sono stati rimossi a partire da Skip 1.7, aprendo il progetto alla comunità globale degli sviluppatori.

Il cambiamento non riguarda soltanto il codice sorgente delle librerie runtime, ma anche il motore di build e trasformazione (SkipStone), anch’esso ora rilasciato come progetto open source su GitHub. La migrazione del sito skip.tools a skip.dev rappresenta un altro tassello del nuovo capitolo, con documentazione, blog e contributi accessibili e ospitati in un ecosistema collaborativo.

Ti consigliamo anche

Link copiato negli appunti