Développement d'applications macOS

De RAD Studio
Aller à : navigation, rechercher

Remonter à Types d'applications multi-périphériques que vous pouvez créer

Vous pouvez utiliser RAD Studio pour créer des applications macOS, et utiliser votre Mac en tant que plate-forme intermédiaire requise pour les apps iOS.

Du point de vue matériel, en plus du PC de développement, vous avez besoin d'un Mac connecté à l'ordinateur de développement (sur lequel RAD Studio est installé) ; par exemple, en utilisant un réseau local (LAN). Voir Prérequis de plate-forme FireMonkey pour obtenir la liste des exigences système, à la fois pour votre PC de développement et le Mac. Voir aussi Travailler avec un Mac et un PC.

Le compilateur Delphi pour macOS 64 bits est DCCOSX64.

Configuration de votre environnement de développement pour macOS

  • Connexion physique : Assurez-vous que RAD Studio peut se connecter au Mac cible :
    Néanmoins, si l'application macOS n'a pas de profil de connexion assigné, et que vous essayez d'effectuer une opération qui requiert un profil de connexion, l'EDI affiche le message suivant :
    Un profil de connexion est requis pour cette opération mais il n'a pas été assigné.
    Voulez-vous assigner ou créer un profil maintenant ?
    L'EDI vous guide ensuite à travers les étapes nécessaires de la création d'un profil de connexion. Sur le dialogue Propriétés de la plate-forme, vous pouvez assigner un profil existant à la plate-forme cible, ou bien sélectionner Ajouter nouveau pour créer un nouveau profil de connexion à assigner à la plate-forme cible.
  • Platform Assistant : Sur le Mac, installez Platform Assistant et exécutez-le.
  • Plate-forme cible :  Dans l'EDI, définissez la plate-forme cible. Lorsque vous créez une application multi-périphérique Delphi ou C++Builder, RAD Studio définit Win32 en tant que plate-forme cible par défaut.
    Pour changer la plate-forme cible en macOS :
    1. Cliquez avec le bouton droit sur le noeud Plates-formes cible dans le Gestionnaire de projets.
    2. Cliquez sur Ajouter la plate-forme macOS 64 bits.
    L'option macOS est indisponible si l'application utilise la VCL (la VCL ne supporte pas macOS).
  • Profil de connexion :  Dans l'EDI, créez et assignez un profil de connexion (un groupe de paramètres qui caractérisent la connexion à votre machine cible ; voir Création et test d'un profil de connexion sur le PC de développement).

Développement de votre application

Utilisation des frameworks dans les apps Mac

Cette section décrit certains aspects du développement d'applications multi-périphériques qui sont spécifiques à la plate-forme cible macOS. Pour des informations générales sur le développement d'applications multi-périphériques, voir Développement des applications multi-périphériques.

RTL

Certaines unités RTL qui fournissent des fonctionnalités de base sont communes au Mac et à Windows, telles que System.pas ou System.SysUtils.pas.

Un certain nombre d'unités RTL sont Mac seulement (voir Frameworks Mac Objective-C). Ces unités sont préfixées avec la portée d'unité Macapi ou Posix.

Voir aussi RTL C pour macOS.

FireMonkey

Le framework FireMonkey est idéal pour la plate-forme cible macOS et il prend également en charge Win32 et Win64. Voir Prérequis de plate-forme FireMonkey.

VCL (indisponible pour le Mac)

La VCL est seulement disponible sur Windows (32 bits et 64 bits).

Frameworks Mac Objective-C (Macapi)

La RTL contient un certain nombre d'unités qui fournissent des interfaces Delphi aux frameworks Mac écrits en Objective-C. Ces unités sont préfixées avec la portée Macapi (de l'API Mac) et sont situées typiquement dans le répertoire /source de l'installation de votre produit :

  • Macapi.AppKit
  • Macapi.AVFoundation
  • Macapi.CocoaTypes
  • Macapi.Consts
  • Macapi.CoreFoundation
  • Macapi.CoreGraphics
  • Macapi.CoreServices
  • Macapi.CoreText
  • Macapi.Foundation
  • Macapi.ImageIO
  • Macapi.Mach
  • Macapi.ObjCRuntime
  • Macapi.ObjectiveC
  • Macapi.OCMarshal
  • Macapi.OpenGL
  • Macapi.QuartzCore
  • Macapi.Security
  • Macapi.SystemConfiguration

Le framework FireMonkey s'appuie sur certaines de ces unités.

Pour de l'aide sur ces API, voir la documentation Apple Mac Developer Library (EN).

Résolution d'ambiguïtés : 'Byte' et 'System::Byte' sur macOS

Delphi et les en-têtes de SDK OS X définissent tous deux le type Byte. Des erreurs d'ambiguïté peuvent donc se produire lorsque vous utilisez le type Byte.

Par exemple, le code suivant :

#include <System.hpp>
DynamicArray<Byte> AByteArray;

génère l'erreur E2015 Ambiguïté entre 'fonction1' et 'fonction2' (C++) lorsqu'il est compilé pour macOS :

Error E2015 t.cpp 2: Ambiguity between 'Byte' and 'System::Byte'
*** 1 errors in Compile ***

Pour résoudre ce problème, vous devez explicitement spécifier la définition de Byte à utiliser, c'est-à-dire l'une ou l'autre des définitions suivantes :

Delphi SDK macOS
System::Byte
::Byte

Par exemple, le code suivant s'exécute sans erreur :

#include <System.hpp>
DynamicArray<System::Byte> AByteArray;

Gestion des exceptions

System.SysUtils contient un certain nombre de classes d'exception qui représentent des exceptions non-langage/matérielles. Ces classes d'exception dérivent de EExternal. Les catégories d'exceptions suivantes sont couvertes :

  • Exceptions de virgule flottante
  • Exceptions de division entière
  • CTRL+C, CTRL+PAUSE
  • Violations d'instructions privilégiées
  • Violations d'accès mémoire

Sur le Mac, la plupart des exceptions EExternal émanent en tant qu'exceptions Mach. Les seules exceptions qui n'émanent pas en tant qu'exceptions Mach sont CTRL+C (EControlC) et CTRL+PAUSE (EQuit).

Si vous utilisez des routines assembleur, voir Exceptions mappées - PC (Program Counter), Déroulement des routines assembleur.

Traitement des exceptions Mach

Pour les exceptions Mach, la RTL de System.SysUtils crée un thread qui écoute les notifications d'exceptions depuis le système d'exploitation. Vous devez seulement inclure dans votre code l'unité System.SysUtils. Quand le thread d'écoute reçoit une notification d'exception Mach, il transforme l'exception Mach en l'exception correspondante du langage Pascal dérivée de EExternal, de la façon appropriée, et déclenche l'exception Pascal vers le thread utilisateur qui a causé l'exception Mach originale.

Si vous voulez travailler directement avec les exceptions Mach, sachez alors qu'en incluant System.SysUtils, un thread dédié est démarré pour l'écoute des exceptions Mach. Vous pouvez examiner le source de System.Internal.MachExceptions.pas pour vous assurer que vous n'interférez pas avec la RTL.

CTRL+C et CTRL+PAUSE

Pour CTRL+C et CTRL+PAUSE, l'application installe des gestionnaires de signaux. (macOS ne crée pas des exceptions Mach pour CTRL+C et CTRL+PAUSE.)

Les gestionnaires SIGINT et SIGQUIT sont conformes aux standards qui définissent la façon dont les applications shell doivent traiter CTRL+C et CTRL+PAUSE.

Nous vous conseillons vivement de ne pas redéfinir les gestionnaires SIGINT et SIGQUIT. Toutefois, si vous le faites, vous ne recevrez pas les exceptions EControlC et EQuit.

Documentation des bibliothèques Mac

Vous pouvez obtenir la documentation macOS sur macOS Developer Library (EN). RAD Studio ne fournit pas d'aide pour des bibliothèques devant être utilisées sur le Mac.

Vous pouvez aussi vous enregistrer en tant que développeur Mac (gratuitement) sur Mac Dev Center (EN). Etre un membre enregistré du programme développeur Apple vous permet de distribuer les applications dans l'App Store (avec d'autres exigences, telles qu'un certificat développeur et un profil d'approvisionnement). Pour de plus amples informations, voir http://developer.apple.com/programs/mac/gettingstarted/ (EN)

Déploiement de votre application macOS finale

Avant chaque release de votre application macOS, vous devez vérifier que chaque paramètre est correctement configuré. Voir Préparation d'une application macOS pour le déploiement.

Pour que votre application macOS soit auto-distribuée, il vous suffit de construire votre application et de distribuer les fichiers binaires générés à vos clients. Pour plus d'informations, voir Distributing Applications Outside the Mac App Store (EN) dans la documentation Apple.

Toutefois, si vous voulez publier votre application sur l'App Store Mac, vous devez suivre des étapes supplémentaires. Pour connaître les étapes détaillées, voir Soumission de votre application à l'App Store Mac.

Comment procéder pour le déploiement des projets (macOS 64 bits)

Lorsque la plate-forme cible macOS 64 bits est ajoutée au projet de l'application démo, la liste de déploiement pour la plate-forme cible 64 bits macOS n'hérite pas des entrées autres que celles définies par défaut depuis la plate-forme cible macOS 32 bits. Vous devez ajouter manuellement ces entrées à la liste de déploiement du projet pour la plate-forme cible macOS 64 bits. Pour cela, suivez les étapes ci-après :

  1. Dans l'EDI, accédez à Projet > Déploiement pour ouvrir l'onglet Déploiement.
  2. Comparez les entrées depuis Toutes les configurations - plate-forme macOS 32 bits avec celles de Toutes les configurations - plate-forme macOS 64 bits.
Comparison.png
Par exemple, le projet exemple FMX.Mobile.VideoPlayback.

Si vous rencontrez des entrées manquantes dans la liste de déploiement pour la plate-forme cible macOS 64 bits, suivez les étapes ci-dessous pour ajouter macOS 64 bits :

  1. Choisissez Toutes les configurations - plate-forme macOS 32 bits dans la zone de liste déroulante.
  2. Cliquez sur des entrées autres que celles par défaut ayant OSX32 mais pas OSX64 dans la colonne Plate-formes.
  3. Cliquez sur la valeur dans la colonne Plates-formes pour afficher le bouton points de suspension (Ellipsis.png).
  4. Cliquez sur le bouton points de suspension.
  5. Sélectionnez OSX64 dans la fenêtre Sélectionner les plates-formes.
  6. Cliquez sur OK.

Choisissez Toutes les configurations - Plate-forme macOS 64 bits dans la zone de liste déroulante et assurez-vous que la valeur de la colonne Nom distant correspond à la valeur de la liste de déploiement pour la plate-forme cible macOS 32 bits.

Rubriques macOS

Voir aussi

Exemples de code