Dot.Blog

C#, XAML, Xamarin, WinUI/Android/iOS, MAUI

Le mode Single Project de MAUI

Le projet unique .NET MAUI facilite la gestion des ressources sur toutes les plates-formes : centralisez-les en un seul endroit et il s'occupe du reste !

Le projet Unique

imageDans cette série sur MAUI nous allons aborder un sujet très important pour commencer : le concept de projet unique !

Avant-propos

Avant de commencer, je voudrais laisser quelques points super importants à garder à l'esprit à propos de MAUI :

Avez-vous lu le post précédent présentant MAUI ? Si ce n'est pas le cas, je vous conseille d'y jeter un œil ! Il présente MAUI et ses différences avec Xamarin.Forms et d’autres outils de développement.

.NET MAUI est un super outil qui est l'évolution des Xamarin Forms - c'est pourquoi l'équipe Microsoft travaille dur pour intégrer l'apprentissage engrangé de Xamarin dans .NET MAUI, travaillant ainsi avec la communauté pour créer un meilleur produit à partir de l’expérience utilisateur et l’angle de vue du développeur !

Commençons!

Qu'est-ce qu'un projet unique ?

Le projet unique .NET Multi-platform App UI (.NET MAUI) se charge de collecter toutes les expériences de développement des différentes plates-formes cibles, telles qu'Android, iOS, macOS et Windows, et de les résumer en un seul projet partagé au lieu d’un projet particulier pour chaque cible native plus un projet XF global, sorte de DLL partagée et utilisées par les « vrais projets » natifs. Plus rien de tout cela ici. Un seul projet « vrai » qui contient votre code et des sections pour ce qui mérite d’être unique à telle ou telle plateforme.

Dans le but de fournir une expérience de développement multiplateforme simplifiée et cohérente sur toutes les plateformes cibles, ce projet est activé grâce au ciblage multiple et à l'utilisation de projets SDK-Style dans .NET 6+.

Pour souligner quelques-uns des points les plus importants de ce type de projet :

  • Une sélection de cible de débogage simplifiée pour exécuter vos applications .NET MAUI.
  • Fichiers de ressources partagés au sein d'un même projet. Dans les projets Xamarin Forms actuels, chaque ressource doit être ajoutée avec les spécifications requises par chaque plate-forme. En mode projet unique MAUI, vous ne l'ajouterez qu'à un endroit d’un seul projet ! Cela permet de gagner beaucoup de temps sur la génération d'images par exemple et surtout d’éviter les erreurs de manipulation (oublie d’une image, copie de versions différentes …).
  • Accès à l'API et aux outils spécifiques à la plateforme en cas de besoin. Il est important de savoir que, même si nous travaillons dans un projet unique avec des ressources partagées, si nécessaire, nous avons également la possibilité d'accéder directement à la plateforme.
  • Un seul point d'entrée d'application multiplateforme.

La gestion des ressources dans le projet unique

Comme déjà évoqué plus haut, dans les projets Xamarin Forms, nous devons générer différents types de ressources pour répondre aux attentes de chaque plate-forme. Le meilleur exemple en est les images. La bonne nouvelle est que dans le projet unique .NET MAUI, vous n'avez plus besoin d'ajouter des ressources spécifiques à la plate-forme - ajoutez simplement une seule ressource et MAUI s'occupe du reste !

Comment puis-je y parvenir et quels types de ressources sont inclus ?

Lorsque je parle de ressources, en plus des images, cela signifie des polices de caractères, des icônes d'application, des écrans de démarrage et des ressources brutes. Ces ressources doivent être situées dans le dossier "Ressources" et leur action de génération doit être définie correctement.

Voici les actions de génération pour chaque type de fichier de ressources suivi de l'emplacement spécifique de la ressource :

image

Que se passe-t-il lorsque j'ajoute une ressource dans le dossier Ressources de la plate-forme spécifique et que je l'ai dans le projet unique ?

Les ressources déjà contenues dans la plateforme spécifique ne sont pas générées. Le projet unique continuera à travailler avec les autres. Ce qui signifie que les personnalisations ponctuelles prennent en toute logique le pas sur les ressources généralisées.

Prenons l'exemple d'une image. Si j'ajoute une image dans le dossier Platforms\Android\Resources\drawable-hdpi et que j'ai également l'image dans le dossier Resources du projet unique, elle se comportera comme suit :

Le projet générera automatiquement toutes les images qui ne sont PAS hdpi, en prenant comme image de base celle contenue dans le dossier Resource du projet unique.

L'image correspondant à hdpi sera extraite de l'emplacement de la ressource spécifique à Android dans ce cas.

Apprenons à connaître chaque type de ressource

Comme d'habitude, pour ajouter une ressource à votre projet, vous pouvez l'ajouter en la faisant glisser vers le dossier Ressources + nom correspondant au type de ressources (Image, font, Splash Screen, etc.) de votre projet unique - et n'oubliez pas de définir la BuildAction correspondant.

Ces ressources sont générées au moment de la construction. Dans le cas des ressources contenues dans le dossier Resources/Images, elles sont redimensionnées aux résolutions correspondantes pour chaque plate-forme, puis l'appareil cible ajoute ces images redimensionnées à son app bundle. Dans le cas des polices, il crée une entrée correspondante par police dans votre fichier de projet.

Chaque ressource crée une entrée correspondante dans son fichier de projet :

image

Explorons maintenant la structure spécifique à un projet unique

Un projet d'application .NET MAUI contient un dossier et des fichiers par plateforme qu'il peut cibler. Ces dossiers contiennent des ressources spécifiques en fonction de ce qui est requis par chacun, et cela démarre l'application sur chaque plate-forme. Explorons un peu cette structure de dossiers :

image

Comme on peut le constater cela est plutôt parlant. C’est simple, le tout dans un seul projet.

Conclusion

Le projet unique de MAUI est une avancée majeure. Il permet d’avoir une vision unifiée de son travail au lieu de plusieurs projet différents pour une même application, il fournit aussi un travail non négligeable pour nous aider à gérer les ressources partagées, images, fontes, etc. Et bien plus encore ! Ce nouveau format de projet est comme la dernière pierre à l’édifice qui rend enfin justice à sa cohérence sous-jacente. Vous adorerez, j’en suis convaincu.

Stay Tuned !

Faites des heureux, partagez l'article !
blog comments powered by Disqus