Développement d'applications Mac OS X

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 Mac OS X, 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 Mac OS X est DCCOSX.

Le compilateur C++ pour Mac OS X est BCCOSX. Le lieur C++ pour Mac OS X est XLINK.

Configuration de votre environnement de développement pour Mac OS X

  • Connexion physique : Assurez-vous que RAD Studio peut se connecter au Mac cible :
    Néanmoins, si l'application OS X 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 OS X :
    1. Cliquez avec le bouton droit sur le noeud Plates-formes cible dans le Gestionnaire de projets.
    2. Cliquez sur Ajouter une plate-forme et sélectionnez OS X.
    L'option OS X est indisponible si l'application utilise la VCL (la VCL ne prend pas en charge OS X).
  • 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).
  • Pour le développement C++ :
    • Xcode et les outils en ligne de commande Xcode :
      Pour les applications C++ OS X, vous devez installer Xcode sur le Mac. Vous devez également installer les outils en ligne de commande Xcode afin de déployer les applications sur l'App Store Mac.
    • SDK :
      Pour C++, ajoutez un SDK, constitué d'un ensemble de fichiers (en-têtes et bibliothèques) qui sont extraits de la machine exécutant le serveur Platform Assistant dans votre système de développement, pour la compilation et la liaison. Voir Ajout d'un SDK Mac OS X ou iOS.

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 Mac OS X. 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 OS X.

FireMonkey

Le framework FireMonkey est idéal pour la plate-forme cible Mac OS X 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).

RTL Mac C (pour le développement C/C++)

Pour la compilation, BCCOSX utilise des fichiers d'en-tête provenant de plusieurs emplacements.

La RTL C est distribuée dans deux emplacements :

Type du chemin d'inclusion

Chemin

Description

standard

$(BDS)\include\osx\crtl

Ce répertoire contient les fichiers d'en-tête RTL C/C++ (.h) fournis par RAD Studio. Certains de ces fichiers incluent les fichiers d'en-tête C/C++ de $(SYSROOT)\usr\include. Pour de plus amples informations, voir RTL C pour OS X.

distant

$(SYSROOT)\usr\include

Ce répertoire contient les fichiers d'en-tête Mac OS X RTL C/C++ mis en cache sur Windows. C'est le répertoire racine du SDK.

Pour la compilation, RAD Studio requiert les fichiers d'en-tête qui résident sur le Mac dans le répertoire /usr/include. Si vous ne disposez pas d'un tel répertoire sur votre Mac, vous devez alors installer Xcode. Avec l'aide de PAServer.exe, le serveur Platform Assistant, RAD Studio copie automatiquement les fichiers d'en-tête du Mac sur Windows (de /usr/include vers $(SYSROOT)\usr\include) quand vous ajoutez un SDK depuis la page Gestionnaire de SDK.

La plupart de la RTL Mac OS X C est standard, et les caractères non standard ne sont pas pris en charge.

Frameworks Mac C (pour le développement C/C++)

Les frameworks Mac OS X fournissent diverses fonctions utiles pour l'écriture du logiciel spécifique à la plate-forme. Certains frameworks sont basés sur le C et peuvent être inclus dans un projet RAD Studio C++Builder. D'autres frameworks sont basés sur Objective-C (tels que Foundation) et peuvent seulement être utilisés à travers les interfaces Delphi (voir la section suivante).

Afin d'inclure un framework Mac C dans un projet RAD Studio, vous devez modifier le SDK que vous utilisez. Ouvrez la page Gestionnaire de SDK et cliquez sur le bouton New.bmp (Ajouter un nouvel élément de chemin sur le côté droit. Dans le dialogue Ajouter un élément de chemin distant ou Modifier un élément de chemin distant, spécifiez les informations suivantes :

  • Le chemin distant du framework (par exemple : /System/Library/Frameworks)
  • Le nom du framework (par exemple : CoreFoundation)

Revenez à la page Gestionnaire de SDK, appuyez sur Mise à jour cache fichiers locaux pour mettre à jour les fichiers locaux du SDK.

Pour de plus amples informations sur l'utilisation des frameworks avec BCCOSX, voir --framework et OpenGL Multicolor Tetrahedron (C++).

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.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 OS X

Delphi et les en-têtes de SDK OSX 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 OS X :

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, soit l'une ou l'autre des suivantes :

Delphi SDK OS X
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 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. (OS X 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 Mac OS X sur Mac OS X Developer Library (EN). RAD Studio ne fournit pas d'aide pour des bibliothèques devant être utilisées sur le Mac.

Vous pouvez également 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 Mac OS X finale

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

Pour que votre application Mac OS X soit auto-distribuée, il vous suffit de construire votre application et de distribuer les fichiers binaires ainsi produits à 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.

Problèmes connus

Si vous rencontrez un problème lors de la construction d'applications OS X 10.11 (El Capitan) avec Delphi, C++Builder ou RAD Studio 10 Seattle, consultez Prise en charge RAD Studio 10 Seattle pour de plus amples informations sur la résolution de ce problème.

Remarque : Ce problème est résolu dans RAD Studio 10 Seattle Update 1. Vous devez utiliser ce correctif uniquement si vous n'avez pas installé Update 1.

Rubriques Mac OS X

Voir aussi


Exemples de code