Tutoriel 4 - Mise à jour de votre application#

Dans le dernier tutoriel, nous avons packagé notre application en tant qu’application native. Si vous avez affaire à une application réelle, l’histoire ne s’arrêtera pas là : vous ferez probablement des tests, découvrirez des problèmes et devrez apporter des modifications. Même si votre application est parfaite, vous finirez par vouloir publier la version 2 de votre application avec des améliorations.

Alors, comment mettre à jour l’application installée lorsque vous modifiez le code ?

Mise à jour du code de l’application#

Notre application imprime actuellement sur la console lorsque vous appuyez sur le bouton. Cependant, les applications d’interface graphique ne devraient pas vraiment utiliser la console pour la sortie. Elles doivent utiliser des boîtes de dialogue pour communiquer avec les utilisateurs.

Ajoutons une boîte de dialogue pour dire bonjour, au lieu d’écrire dans la console. Modifiez le callback say_hello pour qu’il ressemble à ceci: :

def say_hello(self, widget):
    self.main_window.info_dialog(
        f"Hello, {self.name_input.value}",
        "Hi there!"
    )

Toga ouvre ainsi une boîte de dialogue modale lorsque le bouton est enfoncé.

Si vous lancez briefcase dev, entrez un nom et appuyez sur le bouton, vous verrez la nouvelle boîte de dialogue :

Tutoriel Hello World 4 dialogue, sur macOS

Cependant, si vous exécutez briefcase run, la boîte de dialogue n’apparaîtra pas.

Pourquoi ? Eh bien, briefcase dev fonctionne en exécutant votre code en place - il essaie de produire un environnement d’exécution aussi réaliste que possible pour votre code, mais il ne fournit ni n’utilise aucune des infrastructures de la plate-forme pour envelopper votre code en tant qu’application. Une partie du processus d’emballage de votre application implique de copier votre code dans le paquet d’application - et pour le moment, votre application contient toujours l’ancien code.

Nous devons donc demander à Briefcase de mettre à jour votre application, en copiant la nouvelle version du code. Nous pourrions le faire en supprimant l’ancien répertoire de la plateforme et en repartant de zéro. Cependant, Briefcase offre un moyen plus simple - vous pouvez mettre à jour le code de votre application groupée existante :

(beeware-venv) $ briefcase update

[helloworld] Updating application code...
Installing src/helloworld... done

[helloworld] Removing unneeded app content...
Removing unneeded app bundle content... done

[helloworld] Application updated.

Si Briefcase ne trouve pas le modèle échafaudé, il invoquera automatiquement create pour générer un nouvel échafaudage.

Maintenant que nous avons mis à jour le code de l’installateur, nous pouvons lancer briefcase build pour recompiler l’application, briefcase run pour exécuter l’application mise à jour, et briefcase package pour reconditionner l’application en vue de sa distribution.

(Utilisateurs de macOS, rappelez-vous que comme indiqué dans Tutoriel 3, pour le tutoriel nous recommandons d’exécuter briefcase package avec le drapeau --adhoc-sign pour éviter la complexité de la mise en place d’une identité de signature de code et garder le tutoriel aussi simple que possible)

Mise à jour et exécution en une seule étape#

Si vous effectuez rapidement des changements de code, vous voudrez probablement faire un changement de code, mettre à jour l’application et la réexécuter immédiatement. Dans la plupart des cas, le mode développeur (briefcase dev) sera le moyen le plus facile de faire ce genre d’itération rapide ; cependant, si vous testez quelque chose sur la façon dont votre application fonctionne en tant que binaire natif, ou si vous chassez un bogue qui ne se manifeste que lorsque votre application est sous forme de paquetage, vous pouvez avoir besoin d’utiliser des appels répétés à briefcase run. Pour simplifier le processus de mise à jour et d’exécution de l’application packagée, Briefcase dispose d’un raccourci pour supporter ce schéma d’utilisation - l’option -u (ou –update) de la commande run.

Essayons d’apporter une autre modification. Vous avez peut-être remarqué que si vous ne tapez pas de nom dans la zone de saisie, la boîte de dialogue dira « Hello, « . Modifions à nouveau la fonction say_hello pour gérer ce cas particulier.

En haut du fichier, entre les imports et la définition de class HelloWorld, ajoutez une méthode utilitaire pour générer un message d’accueil approprié en fonction de la valeur du nom qui a été fourni: :

def greeting(name):
    if name:
        return f"Hello, {name}"
    else:
        return "Hello, stranger"

Ensuite, modifiez le callback say_hello pour utiliser cette nouvelle méthode utilitaire: :

def say_hello(self, widget):
    self.main_window.info_dialog(
        greeting(self.name_input.value),
        "Hi there!",
    )

Exécutez votre application en mode développement (avec briefcase dev) pour confirmer que la nouvelle logique fonctionne ; puis mettez à jour, compilez et exécutez l’application avec une seule commande :

(beeware-venv) $ briefcase run -u

[helloworld] Updating application code...
Installing src/helloworld... done

[helloworld] Removing unneeded app content...
Removing unneeded app bundle content... done

[helloworld] Application updated.

[helloworld] Building application...
...

[helloworld] Built build/helloworld/macos/app/Hello World.app

[helloworld] Starting app...

La commande package accepte aussi l’argument -u, donc si vous faites un changement dans le code de votre application et que vous voulez repackager immédiatement, vous pouvez lancer briefcase package -u.

Étapes suivantes#

Notre application est désormais prête à être distribuée sur les plates-formes de bureau et nous avons pu mettre à jour le code de notre application.

Mais qu’en est-il de l’application mobile ? Dans Tutoriel 5, nous allons convertir notre application en une application mobile, et la déployer sur un simulateur d’appareil, et sur un téléphone.