Annonce du SDK Swift pour Android
(swift.org)- Alors que le langage Swift a gagné en maturité en s’étendant au cloud, à Windows, aux navigateurs et aux microcontrôleurs, le SDK Swift pour Android est désormais disponible
- Ce SDK est le fruit de plusieurs mois d’efforts du groupe de travail Swift Android et permet aux développeurs de créer des applications natives Android en Swift
- Le SDK est inclus dans l’installateur Windows ou peut être téléchargé séparément pour Linux et macOS, avec du code d’exemple et des guides
- Le projet swift-java prend en charge une interopérabilité bidirectionnelle entre Swift et Java, avec génération automatique de bindings pour garantir performances et sûreté
- Cette publication est considérée comme un tournant qui accélère l’expansion de l’écosystème cross-platform de Swift et ouvre de nouvelles possibilités pour le développement mobile
Aperçu de Swift SDK for Android
- Dans le contexte d’un langage Swift qui s’est étendu au cours des dix dernières années des services cloud à Windows, aux navigateurs et aux microcontrôleurs, son arrivée sur la plateforme Android devient désormais officielle
- Grâce à l’interopérabilité (interoperability) de Swift, le partage de code entre plusieurs plateformes est facilité
- Le groupe de travail Android (Android workgroup) est un groupe ouvert auquel tout le monde peut participer, avec pour objectif d’étendre Swift à Android
- Cette annonce correspond à la publication d’un build nightly (preview) de Swift SDK for Android, résultat d’une longue collaboration de la communauté
Principales fonctionnalités du SDK et mode de distribution
- Les développeurs peuvent désormais utiliser Swift pour créer directement des applications natives Android
- Cela ouvre de nouvelles possibilités pour le développement cross-platform
- Le SDK est fourni avec l’installateur Windows et peut être téléchargé séparément pour Linux et macOS
- Swift.org explique, via le guide “Getting Started”, comment configurer du code Swift sur un appareil Android
- Le dépôt GitHub Swift for Android Examples présente un workflow applicatif de bout en bout
Compatibilité des packages et extension de la communauté
- Le SDK Swift permet de porter des packages Swift existants vers Android
- Plus de 25 % des packages de Swift Package Index prennent déjà en charge des builds Android
- La page Community Showcase indique la compatibilité Android
- Cette extension renforce la prise en charge multiplateforme de l’écosystème Swift
Projet swift-java et interopérabilité
- Le projet swift-java est une bibliothèque et un générateur de code fournissant l’interopérabilité (interoperability) entre Swift et Java
- Il gère automatiquement l’intégration bidirectionnelle entre Swift et Java et génère des bindings sûrs et performants
- Les développeurs peuvent ainsi porter leur logique métier vers Android, avec davantage d’informations dans la vidéo de présentation du Swift Server Side Meetup
Participation de la communauté et feuille de route
- Cette preview ouvre de nouvelles opportunités pour améliorer les outils et élargir l’écosystème
- Il est recommandé de partager expériences, idées, outils et applications dans la catégorie Android des forums Swift
- Cette annonce fait également l’objet de discussions dans le fil officiel du forum
- Le groupe de travail Android rédige actuellement un document de vision (vision document) qui présentera les domaines prioritaires et l’orientation future de Swift sur Android
- Un project board permet de suivre les principales avancées, et le système officiel de CI sert à gérer la qualité du SDK
- L’équipe Swift encourage la participation de la communauté et vise à renforcer la place de Swift dans l’écosystème Android
1 commentaires
Avis Hacker News
La question centrale de tous les frameworks cross-platform est la gestion de l’UI
Si l’on utilise un système de design qui paraît étranger à chaque plateforme, comme Adobe Flex Builder, on finit par devoir recréer soi-même le ressenti natif
Flutter essaie de reproduire parfaitement le thème Cupertino d’iOS, tandis que React Native exploite les widgets natifs de la plateforme pour que des éléments comme le défilement paraissent naturels
C’est dommage que ce point crucial ne soit pas abordé dans le billet de blog
Même si Apple lance Swift pour Android, il est possible que cela paraisse étrange sur Android à cause de la philosophie de design propre à Apple
La direction que prendra ce projet dépendra probablement du fait qu’il soit piloté directement par Apple ou qu’il s’agisse plutôt d’une initiative open source portée par la communauté
C’est pour cela que j’aime KMP. On peut écrire l’UI en SwiftUI sur iOS et en Kotlin sur Android, tout en ne partageant que la logique métier
Dès qu’on essaie de partager l’UI, on tombe dans le cauchemar du « write once, debug everywhere »
Swift for Android semble pouvoir permettre ce même type de partage de logique au niveau du langage
Même dans les exemples, on conserve Jetpack Compose tel quel tout en appelant la logique Swift
Il garde une structure identique au modèle mémoire à comptage de références de Swift, ce qui assure une bonne cohérence
En tant que personne travaillant chez Apple sur les outils pour développeurs, j’espère que cette technologie servira de point de départ à une nouvelle innovation
SwiftUI n’est pas à l’origine une « UI native », mais plutôt un langage déclaratif que le système interprète pour générer des
UIViewou desNSViewÀ moins de les reproduire directement comme Flutter, il est impossible d’utiliser telle quelle l’UI d’Apple sur Android
À la place, des projets comme Skip.tools font le pont entre SwiftUI et Jetpack Compose
On peut en voir un exemple dans l’application Skip Showcase
Je travaille sur les produits Skip, je fais partie du Swift Android Workgroup et j’ai participé à cette release en tant que release manager
Je suis vraiment ravi que cela ait été annoncé comme projet officiel
J’ai utilisé RN et Flutter, mais le problème a toujours été le manque de ressenti natif
Il existe aussi KMP, mais la plupart des développeurs commencent par iOS puis étendent vers Android
Partager le code via Swift Package rend ce flux bien plus naturel
En revanche, les développeurs Swift/Objective-C sont bien moins nombreux
Hors des États-Unis, la part de marché de l’iPhone est plus faible, donc les entreprises ont tendance à penser avant tout en termes de Windows ou de navigateur
KMP est déjà utilisé dans de grosses applications comme Google Workspace, et son niveau de maturité est élevé grâce à Kotlin et aux investissements de JetBrains
Le cycle de release de Flutter était trop rapide pour être facile à suivre
Avec JavaScriptCore ou QuickJS, elle peut fonctionner sur iOS, Android et le Web, avec du hot reload
En revanche, les politiques des app stores rendent difficiles les gros changements fonctionnels, et cela convient plutôt à des corrections de bugs
Vu la lenteur des cycles de déploiement mobile, je pense que cette approche représente une vraie opportunité
Une bibliothèque cœur partagée + un projet d’UI native par plateforme, et cela fonctionne bien
Je me demandais si cela avait un lien avec le projet autour du transpileur SKIP que j’avais vu sur le blog de Skip.tools
Je voulais porter une app SwiftUI sur Android, mais sans passer par RN
Skip propose deux modes : le mode Lite, qui convertit le code Swift en Kotlin, et le mode Fuse, qui compile directement Swift pour Android
Les deux peuvent être utilisés ensemble pour s’intégrer à l’écosystème Kotlin (Lottie, Firebase, etc.)
Une comparaison détaillée est disponible dans la documentation Skip
Je suis ravi que le SDK officiel soit sorti, car cela permet désormais d’utiliser la version officielle au lieu de builds maison
J’espère que cela ne s’arrêtera pas à un simple proof of concept, comme Swift Embedded
Swift est un langage élégant, mais il y a un climat d’inquiétude autour du leadership de la communauté
guard let self = self else { return }— une blague familière pour les développeurs SwiftJ’aimerais qu’on arrête un peu avec RN et Flutter
Je suis fatigué des UI anguleuses et de la lenteur de réaction au toucher
Si la réaction semble lente, c’est probablement un problème d’implémentation de l’app
Apple pourrait vite perdre l’intérêt pour le sujet
« You got Kotlin in my iOS. »
« You got Swift in my Android. » — formule bien trouvée
Voir Kotlin Native Overview
Cette annonce ressemble à une démonstration de réussite du nouveau système de SDK Swift
Avant, le support d’autres plateformes était compliqué à cause des enchevêtrements avec CMake, mais désormais, tant qu’on respecte les règles du SDK, le portage vers n’importe quelle plateforme devient possible
Au-delà d’Android, cela devrait aussi s’étendre à Linux, wasm, embedded, et bientôt Windows
L’interopérabilité avec la JVM n’est pas encore complète, mais l’indépendance vis-à-vis des plateformes s’est clairement renforcée
J’aime Kotlin Multiplatform, mais Swift for Android m’intéresse aussi
Pouvoir partager des bibliothèques Swift natives pour des tâches sensibles à la mémoire semble utile
En revanche, pour migrer toute la logique métier en Swift, KMP paraît encore plus mature aujourd’hui
Le partage de logique métier était déjà un problème résolu
La vraie douleur, c’était de devoir écrire l’UI deux fois
Il faudrait un framework d’UI commun qui ne soit pas aussi pénible que React Native
Avec Expo, l’expérience développeur s’est nettement améliorée
Je partage du code entre Android et iOS depuis longtemps, mais partager l’UI a toujours été un cauchemar
Je ne partageais que la logique complexe en C/C++/Rust, ce qui finissait par faire trois langages différents
KMP et Swift for Android permettent désormais de partager uniquement en Kotlin/Swift, ce qui est bien plus propre
Cette approche est bien plus réaliste et efficace que les frameworks qui forcent le partage de l’UI