Adapter des applications Flutter existantes pour HarmonyOS

L'adaptation de projets Flutter préexistants pour la plateforme HarmonyOS représente un défi courant pour les développeurs souhaitant étendre la portée de leurs applications. Ce guide propose une approche structurée pour intégrer efficacement vos applications Flutter dans l'écosystème HarmonyOS.

Prérequis et environnement

Pour commencer, assurez-vous de dispsoer d'un environnement de développement Flutter configuré, incluant les outils spécifiques à HarmonyOS (SDK, DevEco Studio). Il est important de noter que le support Flutter pour HarmonyOS a souvent des exigences spécifiques en matière de version du SDK Flutter. Par exemple, une compatibilité avec la version 3.7 de Flutter peut être nécessaire. Si votre projet utilise une version différente, vous devrez soit mettre à niveau/rétrograder le SDK de votre projet, soit envisager une stratégie de branches distinctes pour gérer les différentes versions.

Architecture Modulaire pour une Intégration Simplifiée

Une architecture de projet modulaire est essentielle pour une intégration fluide sur de nouvelles plateformes. En divisant votre application en modules réutilisables, vous minimisez les modifications spécifiques à la plateforme et facilitez la maintenance.

Considérez une structure de monorépo où votre projet est organisé en plusieurs packages logiques :

.
├── .gitignore
├── pubspec.yaml
├── packages
│   ├── apps
│   │   ├── mon_app_android
│   │   ├── mon_app_ios
│   │   ├── mon_app_ohos  // L'application spécifique à HarmonyOS
│   │   └── mon_app_web
│   ├── bibliotheque_commune // Code Dart pur, logique métier, services
│   ├── composants_ui         // Widgets Flutter génériques et UI
│   ├── fonctionnalites     // Modules métier spécifiques (ex: authentification, profil)
│   └── plugins_natifs      // Plugins nécessitant du code natif (ex: caméra, stockage)

  • bibliotheque_commune : Contient la logique métier, les modèles de données, les services et les utilitaires entièrement écrits en Dart, indépendamment de toute plateforme.
  • composants_ui : Regroupe les widgets d'interface utilisateur réutilisibles qui ne dépendent pas de fonctionnalités natives spécifiques.
  • fonctionnalites : Des modules plus importants qui encapsulent des fonctionnalités complètes, pouvant combiner logique métier et UI.
  • plugins_natifs : Des packages Flutter qui encapsulent des fonctionnalités spécifiques à la plateforme et qui nécessitent une implémentation native (Android, iOS, HarmonyOS, etc.).
  • apps : Ce répertoire contient les projets d'entrée pour chaque plateforme cible. Chaque sous-dossier représente une "surcouche" d'application qui assemble les modules partagés pour une plateforme donnée.

Cette approche permet de démarrer l'intégration HarmonyOS en créant une application "coquille" dédiée (par exemple, mon_app_ohos) et en y ajoutant progressivement les dépendances modulaires.

Création du projet HarmonyOS

La première étape consiste à générer un projet Flutter spécifique à HarmonyOS. Utilisez la commande flutter create en spécifiant la plateforme cible :

flutter create --platforms ohos mon_app_ohos

Cela créera une nouvelle application Flutter avec les structures de dossiers nécessaires pour HarmonyOS, y compris le dossier ohos qui contiendra les fichiers de configuration et les ressources spécifiques à la plateforme.

Le fichier pubspec.yaml de cette nouvelle application mon_app_ohos servira de point central pour déclarer toutes les dépendances de votre application HarmonyOS.

environment:
  sdk: '>=2.19.6 <3.0.0' # Ou la version Flutter compatible avec HarmonyOS
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  go_router: ^6.0.0
  # Dépendances vers vos modules locaux
  bibliotheque_commune:
    path: '../../bibliotheque_commune'
  composants_ui:
    path: '../../composants_ui'
  fonctionnalite_auth:
    path: '../../fonctionnalites/authentification'
  fonctionnalite_profil:
    path: '../../fonctionnalites/profil'

Commencez par ajouter les dépendances vers vos packages purement Dart (bibliotheque_commune, composants_ui, etc.). Une fois que l'application de base fonctionne, intégrez les plugins natifs un par un pour faciliter le débogage en cas de problèmes.

Gestion des dépendances spécifiques à HarmonyOS

Certains plugins tiers ou leurs dépendances peuvent ne pas encore avoir été officiellement adaptés à HarmonyOS. Dans de tels cas, vous pouvez utiliser la section dependency_overrides de votre fichier pubspec.yaml pour forcer l'utilisation d'une version compatible HarmonyOS (souvent maintenue par la communauté ou par des forks spécifiques).

Voici un exemple pour le plugin path_provider, où une version compatible HarmonyOS est spécifiée via un dépôt Git :

dependency_overrides:
  path_provider:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_packages.git"
      path: "packages/path_provider/path_provider"

Cette méthode est cruciale pour résoudre les incompatibilités des dépendances natives lors du portage vers HarmonyOS.

Compilation et Débogage

Une fois toutes les dépendances configurées, compilez et exécutez votre projet Flutter sur un émulateur ou un appareil HarmonyOS. Surveillez attentivement les journaux d'exécution.

  • Les journaux Flutter peuvent être consultés directement dans la console de débogage de votre IDE.
  • Pour les problèmes liés à la plateforme HarmonyOS, utilisez des outils comme la commande hdc hilog via le terminal ou le visualiseur de journaux intégré à DevEco Studio. Ces outils vous aideront à identifier les erreurs spécifiques au système HarmonyOS.

Étiquettes: Flutter HarmonyOS Développement mobile Multi-plateforme Monorepo

Publié le 27 juin à 18h35