📋

Faits clés

  • Un développeur a construit et mis à jour un exemple d'application Android en utilisant Rust, Iced et WGPU.
  • L'intégration repose sur android-activity, winit et wgpu pour un support natif Android.
  • Les défis incluaient la correction du rendu de texte avec le chargement de polices et l'ajout de support tactile aux widgets.
  • D'autres options Rust pour Android incluent xilem, egui, Fyrox et Bevy.
  • Un développement similaire pour iOS est prévu, en utilisant les mêmes outils de base sans blocages visibles.

Résumé rapide

Un développeur a récemment partagé son expérience réussie dans la construction d'une application Android en utilisant Rust et la bibliothèque GUI Iced, en mettant à jour l'exemple vers les dernières versions d'Iced et WGPU. Cette initiative vise à attirer plus d'attention sur les capacités de Rust sur Android, en s'appuyant sur des outils fondamentaux comme android-activity, winit et wgpu. En partant d'exemples existants du dépôt rust-android-examples, qui supporte à la fois NativeActivity et GameActivity, le développeur a combiné ceux-ci avec l'exemple d'intégration d'Iced pour les applications WGPU.

Malgré le focus principal d'Iced sur le desktop et le web — où le support mobile n'est pas un objectif explicite — l'intégration s'est compilée avec des erreurs minimales. Les défis clés incluaient la correction du rendu de texte en chargeant les polices via une méthode spécifique et le patch des widgets pour le support tactile. Le résultat est un exemple fonctionnel qui s'appuie sur les efforts communautaires antérieurs. D'autres options basées sur Rust pour Android incluent des bibliothèques comme xilem et egui, ainsi que des moteurs de jeu tels que Fyrox et Bevy. À l'avenir, des approches similaires pourraient s'étendre à iOS, sans blocages majeurs identifiés.

Outils fondamentaux pour Rust sur Android

Le parcours pour construire des applications Android avec Rust commence par des crates et outils essentiels qui forment l'épine dorsale du développement natif. Les développeurs peuvent s'appuyer sur android-activity pour gérer le cycle de vie des activités Android, en s'intégrant de manière fluide avec winit pour la gestion des fenêtres et wgpu pour le rendu graphique. Ces composants fournissent une base solide sans nécessiter de frameworks supplémentaires au départ.

Les ressources existantes jouent un rôle crucial pour démarrer. Le dépôt rust-android-examples offre un ensemble complet de démonstrations utilisant à la fois NativeActivity et GameActivity, permettant aux développeurs de tester rapidement des configurations de base. De plus, des exemples incorporant egui sont disponibles dans ce dépôt, montrant des possibilités UI immédiates sur Android.

La gratitude s'étend aux contributeurs derrière ces outils, y compris des projets comme jni-rs pour les bindings Java Native Interface et divers autres qui permettent l'interopérabilité de Rust avec l'écosystème Android. Cet effort collaboratif souligne l'engagement de la communauté à étendre l'empreinte mobile de Rust.

  • android-activity : Gère les activités des applications Android en Rust.
  • winit : Fournit une gestion de fenêtres cross-platform.
  • wgpu : Offre un support API graphique basé sur WebGPU.
  • rust-android-examples : Inclut des démos pratiques pour NativeActivity et GameActivity.

Intégrer Iced pour le développement GUI

Iced, une bibliothèque GUI cross-platform principalement conçue pour les applications desktop et web, présente des opportunités uniques pour Android malgré que le mobile ne soit pas un objectif explicite. Les développeurs ont expérimenté son intégration, comme documenté dans les discussions communautaires, révélant des voies pour l'adapter aux interfaces basées sur le tactile.

Le processus d'intégration s'appuie sur l'exemple d'Iced pour l'intégration dans des applications wgpu. En combinant cela avec android-activity, la compilation se déroule sans heurts avec peu d'erreurs, permettant une couche GUI fonctionnelle au-dessus de la configuration de rendu de base.

Étapes clés d'intégration

Pour y parvenir, la pile de base android-activity, winit et wgpu sert de point d'entrée. L'exemple d'intégration Iced superpose ensuite les éléments GUI, permettant au code Rust de piloter à la fois la logique de l'application et l'interface utilisateur.

  1. Commencer avec rust-android-examples pour vérifier la configuration Android de base.
  2. Incorporer l'exemple d'intégration Iced WGPU.
  3. Compiler et tester la compatibilité sur des appareils Android.

Cette approche transforme Iced d'un outil axé sur le desktop en une option viable pour le mobile, en s'appuyant directement sur les primitives graphiques Rust établies.

Surmonter les défis dans la mise en œuvre

Bien que l'intégration de Iced avec Android se soit avérée simple dans de nombreux aspects, certains obstacles ont requis des solutions ciblées. Un problème principal était l'absence de rendu de texte, qui provenait de mécanismes de chargement de polices non optimisés pour les environnements mobiles.

Cela a été résolu en adoptant une technique de chargement de polices démontrée dans les ressources communautaires, assurant l'affichage correct des éléments textuels dans l'application. Ensuite, des modifications à certains widgets ont introduit un support tactile essentiel, adaptant l'interface aux méthodes d'entrée d'Android.

La contribution du développeur s'est concentrée sur la synthèse de ces éléments en un exemple cohérent et fonctionnel plutôt que sur la création de nouvelles fonctionnalités. Cette assemblage de travaux antérieurs — des corrections de polices aux patches tactiles — aboutit à un modèle reproductible pour d'autres explorant Rust sur Android.

  • Correction du rendu de texte : Implémentée via une méthode spécifique de chargement de polices.
  • Support tactile : Ajouté par des patches de widgets.
  • Rôle global : Combiner des solutions existantes en une démo fonctionnelle.

Ces ajustements mettent en lumière la nature itérative du portage de bibliothèques desktop vers le mobile, où de petites modifications débloquent une utilisabilité plus large.

Alternatives et orientations futures 🚀

Au-delà d'Iced, plusieurs options basées sur Rust facilitent le développement d'applications Android. Xilem cible explicitement le support mobile comme objectif principal, tandis que egui accomplit déjà nativement les interfaces tactiles. Des moteurs de jeu comme Fyrox et Bevy étendent leurs capacités aux plateformes mobiles, en s'appuyant sur winit et wgpu pour le rendu.

Tout projet construit sur ces éléments fondamentaux peut potentiellement cibler Android en utilisant des approches NativeActivity ou GameActivity. Les applications basées sur Webview, bien que hors de cette discussion, représentent une autre avenue non explorée ici.

Extension à iOS

Les perspectives pour iOS reflètent la configuration d'Android, potentiellement même plus simples dans l'exécution. La stratégie implique de sélectionner winit, wgpu et l'exemple d'intégration Iced, puis de raffiner au besoin — comme l'astuce de chargement de polices — sans obstacles apparents.

Les efforts futurs prioriseront cette expansion une fois le temps permis, promettant une cohérence cross-platform dans le développement mobile Rust.

En conclusion, l'application Android Rust et Iced réussie exemplifie l'écosystème en maturation de la langue pour le mobile. En honorant les outils communautaires et en abordant les nuances d'intégration, les développeurs peuvent innover efficacement. Ce progrès invite à plus d'expérimentations, favorisant le rôle de Rust dans la création d'applications diverses à travers les plateformes.

"J'aimerais partager mon expérience pour attirer plus d'attention sur Rust sur Android."

— Développeur

"Mon rôle ici était de prendre tous les travaux antérieurs et de les combiner de manière à ce qu'il y ait un exemple fonctionnel."