Développement d'applications Mac OS X
Remonter à Applications multiplates-formes - Index
Vous pouvez utiliser RAD Studio pour créer des applications Mac OS X. Du point de vue matériel, vous avez besoin d'une machine Mac connectée à un ordinateur de développement (où RAD Studio est installé) via un réseau local. Pour plus de détails, voir Connexion de votre PC à un Mac.
Le compilateur Delphi pour Mac OS X est DCCOSX.EXE.
Le compilateur C++ pour Mac OS X est BCCOSX.EXE. Le lieur C++ pour Mac OS X est XLINK.EXE.
Configuration de votre environnement de développement multiplate-forme pour Mac OS X
- Platform Assistant : Sur le Mac, installez et exécutez Platform Assistant (voir Installation et exécution de Platform Assistant sur la plate-forme cible).
- Profil distant : Dans l'EDI, créez et assignez un profil distant. Un profil distant est un groupe de paramètres qui peuvent être facilement réutilisés (voir Création d'un profil distant sur le PC de développement).
- Plate-forme cible : Dans l'EDI, définissez la plate-forme cible. Quand vous créez une application Delphi ou C++Builder, RAD Studio définit la plate-forme Win32 par défaut en tant que plate-forme cible. Pour que la plate-forme cible soit OS X, cliquez avec le bouton droit sur le noeud Plates-formes cible du Gestionnaire de projets, 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 supporte pas OS X).
- Connexion physique : Assurez-vous que RAD Studio peut se connecter au Mac cible ; cliquez sur Tester connexion dans le panneau Profils distants.
- Néanmoins, si l'application OS X n'a pas de profil distant assigné, l'EDI affiche le message suivant :
-
Un profil distant 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 distant. Sur la boîte de dialogue Sélectionner le profil distant, vous pouvez créer (Ajouter) un profil distant ou assigner un profil existant à votre projet.
-
- Pour C++, quand vous créez un profil distant pour OS X et que vous accédez à la page Informations relatives aux répertoires C++ de l'expert Créer un profil distant, n'oubliez pas d'activer Utiliser ce profil avec les projets C++ avant de cliquer sur Terminer. Quand vous avez cliqué sur OK pour fermer la boîte de dialogue Sélectionner le profil distant, l'opération Mise à jour cache fichiers locaux s'exécute automatiquement, afin que les bibliothèques et les en-têtes C++ nécessaires soient copiés localement pour la compilation et la liaison.
- Néanmoins, si l'application OS X n'a pas de profil distant assigné, l'EDI affiche le message suivant :
Acquisition des identifiants Apple requis
Développement et test d'applications OS X et iOS et auto-distribution d'applications OS X : Le développement, le test et l'auto-distribution d'applications OS X ne vous obligent pas à vous enregistrer ou à rejoindre le programme développeur Apple. Bien que vous devez obtenir un identifiant Apple afin de télécharger l'EDI de XCode depuis l'App Store, ni Xcode ni votre ordinateur ne nécessite une forme quelconque d'enregistrement.
De même, les applications iOS peuvent être développées et testées sur le simulateur sans avoir à s'enregistrer pour le programme développeur iOS mais, pour tester sur un périphérique, vous devez rejoindre ce programme.
Vous n'avez pas besoin de rejoindre les programmes développeur iOS ou Mac, sauf si vous voulez tester les applications iOS sur un périphérique ou distribuer vos applications via l'App Store approprié. Toutefois, rejoindre l'un ou les deux programmes développeur vous autorise à accéder à une profusion de ressources développeur, autrement indisponibles.
Vous aurez besoin de plusieurs identifiants (IDs), accessibles auprès de Apple Computers et susceptibles d'être modifiés par Apple Computers, comme suit :
- Identifiant Apple et iTunes : Afin d'acheter des applications (depuis l'App Store Mac) ou de la musique (depuis iTunes Store), vous devez acquérir un identifiant Apple (gratuit) et un compte iTunes (gratuit) :
- Mac : Afin de distribuer vos applications Mac dans l'App Store Mac, vous devez :
- Acquérir un identifiant développeur Apple (gratuit)
- Rejoindre un programme développeur Mac (99 $ par an pour un développeur individuel)
- iOS : Afin de tester les applications sur les périphériques iOS (iPod, iPhone et iPad) et distribuer vos applications iOS dans l'App Store iOS, vous devez :
- Acquérir un identifiant développeur Apple (gratuit)
- Rejoindre un programme développeur iOS (99 $ par an pour un développeur individuel)
Remarque : Avec XE2, seules les applications Delphi FireMonkey peuvent être créées pour iOS. Pour de plus amples informations, voir Configuration du développement FireMonkey pour iOS.
Les programmes développeur pour Mac et iOS fournissent les outils nécessaires (tels que Xcode et le SDK), la documentation en ligne et le support. Des programmes distincts sont disponibles pour les individus, les sociétés et les universités, et l'enregistrement pour les programmes en groupe est moins onéreux par personne que pour un développeur particulier.
Sandbox requis pour les applications OS X
Le mécanisme Sandbox restreint l'accès aux ressources du système et est un moyen pour Apple de garantir que les applications sont sécurisées et ne contiennent pas de programmes malveillants.
- Toutes les applications distribuées par le biais de Mac App Store doivent utiliser le mécanisme sandbox à partir du 1er juin 2012.
- Pour de plus amples informations, voir :
- https://developer.apple.com/devcenter/mac/app-sandbox/ (nécessite un identifiant Apple, comme décrit dans #Acquisition des identifiants Apple requis)
- App Sandbox Design Guide
Sur le Mac, vous devez créer un fichier ProjectName.entitlements et le placer dans le bundle de l'application, signer le code du bundle, packager le bundle et le soumettre à Apple. Voici les éléments nécessaires et les informations adéquates d'Apple :
- Fichier XML entitlements
- Commande codesign :
- man page for codesign command
- Code Signing Guide
- Code Signing Your App
- Par exemple :
-
codesign -s"Nom du certificat" -f "Nom du bundle de l'application"
-
- Commande productbuild
- Commande installer (pour tester l'installation de votre application)
Signature du code et construction de votre application Mac sur le Mac
Ces étapes sont nécessaires si voulez soumettre votre application au Mac AppStore.
Remarques :
- Assurez-vous d'obtenir un certificat de distribution pour la soumission des applications au Mac AppStore depuis http://developer.apple.com/certificates.
- Pour ce faire, vous aurez besoin d'un compte développeur Apple.
- Assurez-vous que le certificat est installé dans votre Keychain (double-cliquez sur le fichier
.cerdans le Finder).- Vous aurez besoin d'un fichier entitlements.xml pour le mécanisme Sandbox du Mac.
- Construisez votre application dans l'EDI et déployez-la sur Mac OS X (Snow Leopard ou Lion).
- Ouvrez une fenêtre terminal sur le Mac.
- Basculez sur le répertoire de travail (scratch-dir) de paserver, par exemple :
-
Applications/Embarcadero/PAServer/scratch-dir/machinename-profilename/
-
- Exécutez les commandes suivantes :
- Signer le code de votre application :
sudo codesign -f -v -s "Mac Developer: FirstName LastName" "AppName.app"
- Créer un package d'installateur :
sudo productbuild --component "AppName.app" /Applications --sign "Mac Developer: FirstName LastName" --product "AppName.app/Contents/info.plist" AppName.pkg
Utilisation des frameworks dans les applications Mac
RTL Delphi
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.
FireMonkey
Le framework FireMonkey est idéal pour la plate-forme cible Mac OS X, prenant également en charge tant Win32 que 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++)
BCCOSX.EXE utilise des fichiers d'en-tête de plusieurs emplacements pour la compilation.
- Pour obtenir des informations sur les chemins d'inclusion, voir "Chemins d'inclusion (
-I, --sysinc)" dans BCCOSX, le compilateur croisé C++ pour OS X. - Pour obtenir des informations sur la définition du répertoire racine système, voir "Racine système (
--sysroot)" dans BCCOSX, le compilateur croisé C++ pour OS X.
La RTL C est distribuée dans deux emplacements :
|
Type du chemin d'inclusion |
Chemin |
Description |
|---|---|---|
| standard |
|
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 |
|
distant |
|
Ce répertoire contient les fichiers d'en-tête Mac OS X RTL C/C++ mis en cache sur Windows. Pour la compilation, RAD Studio requiert les fichiers d'en-tête qui résident sur le Mac dans le répertoire |
La grande partie de la RTL Mac OS X C est standard, et les caractères non standard ne sont pas supportés.
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 profil distant que vous utilisez. Ouvrez le panneau Profils distants et cliquez sur le bouton Ajouter un nouvel élément de chemin sur le côté droit. Dans la boîte de dialogue Ajouter 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)
Pour de plus amples informations, 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 obtenir de l'aide sur ces APIs, voir la documentation Apple sur http://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Reference
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.
Icônes pour vos applications OS X
Sur le Mac, vous avez typiquement besoin d'un fichier .ico (fichier icône) pour représenter votre application dans l'interface utilisateur. Des fichiers .ico spécifiques à la personnalité sont fournis pour votre usage :
-
delphi_PROJECTICON.ico -
cbuilder_PROJECTICON.ico
Ces fichiers .ico sont disponibles dans le répertoire /bin de l'installation de votre produit.
Xcode requis pour les applications FireMonkey iOS
- Xcode est utilisé sur le Mac pour construire et déboguer des applications FireMonkey iOS. Téléchargez Xcode depuis
- Pour de plus amples informations, voir Création d'une application FireMonkey iOS (Prise en main de FireMonkey)
Rubriques Mac OS X
- Connexion de votre PC à un Mac
- Application console multiplate-forme OS X "Hello World"
- Compilation et liaison d'une application console OS X C++ depuis la ligne de commande
- Exceptions mappées - PC (Program Counter)
- Considérations pour les applications multiplates-formes
Voir aussi
- Configuration du développement FireMonkey pour iOS
- "Sur la plate-forme Mac OS X, le débogueur nécessite des permissions de fichier" dans Débogage des applications multiplates-formes
- Apple Developer Center
- Mac Dev Center
- Mac OS X Developer Library
- Introduction to Codesigning for Mac
- Submitting Your Mac App to the App Store
- Building for the Mac app store
Exemples de code
- OpenGL Multicolor Tetrahedron (C++)
- C:\Utilisateurs\Public\Documents publics\RAD Studio\9.0\Samples\FireMonkey\XMLonMac