OS X-Anwendungsentwicklung

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Geräteübergreifende Anwendungstypen, die erstellt werden können

Mit RAD Studio können Sie Anwendungen für Mac OS X erstellen und Ihren Mac als erforderliche Zwischenplattform für iOS-Apps verwenden.

Hardwareseitig benötigen Sie zusätzlich zum Entwicklungs-PC einen Mac, der mit dem Entwicklungscomputer (auf dem RAD Studio installiert ist) verbunden ist; z. B. über ein LAN (Local Area Network). Unter Plattformvoraussetzungen für FireMonkey finden Sie eine Liste mit den Systemanforderungen für den Entwicklungs-PC sowie für den Mac. Siehe auch Arbeiten mit einem Mac und einem PC.

Der Delphi-Compiler für Mac OS X ist DCCOSX.

Der C++-Compiler für Mac OS X ist BCCOSX. Der C++-Linker für Mac OS X ist XLINK.

Konfigurieren der Entwicklungsumgebung für Mac OS X

  • Physische Verbindung: Stellen Sie sicher, dass RAD Studio eine Verbindung mit dem Ziel-Mac herstellen kann:
    Wenn der OS X-App jedoch kein Verbindungsprofil zugewiesen ist, und Sie versuchen, eine Aktion durchzuführen, für die ein Verbindungsprofil erforderlich ist, zeigt die IDE die folgende Meldung an:
    Für diese Operation ist ein Verbindungsprofil erforderlich, wurde aber nicht zugewiesen.
    Soll jetzt ein Profil erstellt oder zugewiesen werden?
    Sie werden dann durch die zum Erstellen eines Verbindungsprofils erforderlichen Schritte geführt. Im Dialogfeld Plattformeigenschaften können Sie der Zielplattform ein vorhandenes Profil zuweisen oder Neue hinzufügen wählen, um ein Verbindungsprofil zu erstellen und der Zielplattform zuzuweisen.
  • Platform Assistant: Installieren Sie auf dem Mac den Platform Assistant, und führen Sie ihn aus.
  • Zielplattform: Legen Sie in der IDE die Zielplattform fest. Wenn Sie eine geräteübergreifende Delphi- oder C++Builder-Anwendung erstellen, wird von RAD Studio Win32 als Standardzielplattform festgelegt.
    So ändern Sie die Zielplattform in OS X:
    1. Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf den Knoten Zielplattformen.
    2. Klicken Sie auf Plattform hinzufügen, und wählen Sie OS X.
    Die Option "OS X" ist nicht verfügbar, wenn die Anwendung die VCL verwendet (OS X wird von der VCL nicht unterstützt).
  • Verbindungsprofil: Erstellen Sie in der IDE ein Verbindungsprofil (eine Gruppe von Einstellungen, die die Verbindung zu Ihrem Zielcomputer charakterisiert; siehe Erstellen und Testen eines Verbindungsprofils auf dem Entwicklungs-PC), und weisen Sie es zu.
  • C++-Entwicklung:
    • Xcode und Xcode-Befehlszeilen-Tools:
      Für C++-Anwendungen für OS X müssen Sie auf dem Mac Xcode installieren. Sie müssen auch die Xcode-Befehlszeilen-Tools installieren (Command Line Tools), damit Sie Anwendungen an den Mac App Store weitergeben können.
    • SDK:
      Fügen Sie für C++ ein SDK hinzu, das eine Reihe von Dateien (Header und Bibliotheken) enthält, die zum Compilieren und Linken von dem Computer, auf dem der "Platform Assistant"-Server ausgeführt wird, auf das Entwicklungssystem übernommen werden. Siehe Hinzufügen von SDKs für Mac OS X oder iOS.

Entwickeln von Anwendungen

Verwenden von Frameworks in Mac-Apps

In diesem Abschnitt werden einige für die Zielplattform Mac OS X spezifische Aspekte bei der Entwicklung von geräteübergreifenden Anwendungen beschrieben. Die allgemeine Dokumentation zur geräteübergreifenden Entwicklung finden Sie unter Geräteübergreifende Anwendungen entwickeln.

RTL

Einige RTL-Units, die die grundlegende Funktionalität bereitstellen, werden vom Mac und von Windows gemeinsam verwendet, z. B. System.pas oder System.SysUtils.pas.

Einige RTL-Units können nur für den Mac verwendet werden (siehe Objective-C-Frameworks für den Mac). Diesen Units ist das Unit-Gültigkeitsbereichs-Präfix Macapi oder Posix vorangestellt.

Siehe auch C-RTL für OS X..

FireMonkey

Das FireMonkey-Framework eignet sich ideal für die Mac OS X-Zielplattform und unterstützt auch Win32 und Win64. Siehe Plattformvoraussetzungen für FireMonkey.

VCL (nicht verfügbar für den Mac)

Die VCL steht nur unter Windows (32 Bit und 64 Bit) zur Verfügung.

Mac-C-RTL (für die C/C++-Entwicklung)

BCCOSX verwendet für die Compilierung Header-Dateien von verschiedenen Speicherorten.

Die C-RTL wird in zwei verschiedenen Verzeichnissen gespeichert:

Include-Pfadtyp

Pfad

Beschreibung

Standard

$(BDS)\include\osx\crtl

Dieses Verzeichnis enthält die von RAD Studio bereitgestellten C/C++-RTL-Header-Dateien (.h). Einige dieser Dateien enthalten C/C++-Header-Dateien aus $(SYSROOT)\usr\include. Weitere Informationen finden Sie unter C-RTL für OS X.

Remote

$(SYSROOT)\usr\include

Dieses Verzeichnis enthält die auf Windows zwischengespeicherten C/C++-RTL-Header-Dateien für Mac OS X. Es ist das SDK-Stammverzeichnis.

RAD Studio benötigt für die Compilierung die Header-Dateien, die sich im Verzeichnis /usr/include auf dem Mac befinden. Wenn auf Ihrem Mac dieses Verzeichnis nicht vorhanden ist, dann müssen Sie Xcode installieren. Mit Unterstützung von PAServer.exe, dem "Platform Assistant"-Server, kopiert RAD Studio beim Hinzufügen eines SDK von der Seite SDK-Manager automatisch die Header-Dateien vom Mac auf den Windows-Computer (von /usr/include nach $(SYSROOT)\usr\include).

Der größte Teil der C-RTL für Mac OS X ist Standard. Nicht-Standardzeichen werden nicht unterstützt.

Mac-C-Frameworks (für die C/C++-Entwicklung)

Mac OS X-Frameworks stellen eine Reihe nützlicher Funktionen für die Entwicklung plattformspezifischer Software bereit. Einige Frameworks basieren auf C und können in ein C++Builder-Projekt in RAD Studioeinbezogen werden. Einige Frameworks basieren auf Objective-C (wie Foundation) und können nur über Delphi-Interfaces verwendet werden (siehe den folgenden Abschnitt).

Damit Sie ein Mac-C-Framework in ein RAD Studio-Projekt einbeziehen können, müssen Sie das verwendete SDK bearbeiten. Öffnen Sie die Seite SDK-Manager, und klicken Sie rechts auf die Schaltfläche New.png (Neuen Pfadeintrag hinzufügen). Geben Sie im Dialogfeld Remote-Pfadeintrag hinzufügen oder Remote-Pfadeintrag bearbeiten Folgendes an:

  • Framework-Remote-Pfad (Beispiel: /System/Library/Frameworks)
  • Framework-Name (Beispiel: CoreFoundation)

Klicken Sie auf der Seite SDK-Manager auf Lokalen Dateizwischenspeicher aktualisieren, um die lokalen SDK-Dateien zu aktualisieren.

Weitere Informationen über die Verwendung von Frameworks mit BCCOSX finden Sie unter --framework und OpenGL Multicolor Tetrahedron (C++).

Mac-Objective-C-Frameworks (Macapi)

Die RTL enthält eine Reihe von Units, die Delphi-Interfaces für Mac-Frameworks in der Sprache Objective-C bereitstellen. Diesen Units ist der Gültigkeitsbereich Macapi (von Mac-API) vorangestellt, und sie befinden sich normalerweise im Verzeichnis /source Ihrer Produktinstallation:

  • 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

Das FireMonkey-Framework basiert auf einigen dieser Units.

Hilfe zu dieser API finden Sie in der Apple-Dokumentation unter Mac Developer Library (EN).

Auflösen von Mehrdeutigkeiten: "Byte" und "System::Byte" auf OS X

Sowohl Delphi als auch die OS X-SDK-Header definieren den Typ "Byte". Daher könnten Fehler aufgrund von Mehrdeutigkeiten auftreten, wenn Sie nur "Byte" verwenden.

Der folgende Code:

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

führt beispielsweise bei der Compilierung für OS X zu dem Fehler E2015 Mehrdeutigkeit zwischen 'Funktion1' und 'Funktion2' (C++):

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

Um dieses Problem zu lösen, sollten Sie die Definition von "Byte", die Sie verwenden möchten, explizit wie folgt spezifizieren:

Delphi OS X-SDK
System::Byte
::Byte

Der folgende Code beispielsweise sollte fehlerfrei compiliert werden:

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

Exception-Behandlung

System.SysUtils enthält eine Reihe von Exception-Klassen, die sprachunabhängige/Hardware-Exceptions repräsentieren. Diese Exception-Klassen sind von EExternal abgeleitet. Folgende Exception-Kategorien werden abgedeckt:

  • Gleitkomma-Exceptions
  • Integer-Divisions-Exceptions
  • STRG+C, STRG+UNTBR
  • Privilegierte Anweisungsverletzungen
  • Speicherzugriffsverletzungen

Auf dem Mac entstehen die meisten EExternal-Exceptions als Mach-Exceptions. Die einzigen Exceptions, die nicht als Mach-Exceptions entstehen, sind STRG+C (EControlC) und STRG+UNTBR (EQuit).

Informationen zur Verwendung von Assembly-Routinen finden Sie unter PC-zugeordnete Erweiterungen, Abwicklung von Assembly-Routinen.

Verarbeitung von Mach-Exceptions

Für Mach-Exceptions erstellt die RTL aus System.SysUtils einen Thread, der Exception-Benachrichtigungen vom Betriebssystem empfängt. Sie müssen nur die Unit System.SysUtils in Ihren Code einbeziehen. Wenn der empfangende Thread eine Benachrichtigung über eine Mach-Exception erhält, wandelt er die Mach-Exception in die entsprechende, von EExternal abgeleitete Exception der Pascal-Sprache um und löst die Pascal-Exception in dem Benutzer-Thread aus, der die ursprüngliche Mach-Exception verursacht hat.

Wenn Sie direkt mit Mach-Exceptions arbeiten möchten, müssen Sie wissen, dass durch das Einbeziehen von System.SysUtils ein spezieller Thread für den Empfang von Mach-Exceptions gestartet wird. Sie können den Quellcode von System.Internal.MachExceptions.pas untersuchen, um sicherzugehen, dass Sie nicht mit der RTL in Konflikt geraten.

STRG+C und STRG+UNTBR

Für STRG+C und STRG+UNTBR installiert die Anwendung Signalbehandlungsroutinen. (OS X erstellt für STRG+C und STRG+UNTBR keine Mach-Exceptions.)

Die Behandlungsroutinen SIGINT und SIGQUIT entsprechen den Standards, die definieren, wie Shell-Anwendungen STRG+C und STRG+UNTBR behandeln müssen.

Es wird dringend empfohlen, die Behandlungsroutinen SIGINT und SIGQUIT nicht zu überschreiben. Falls Sie dies aber dennoch tun, erhalten Sie keine EControlC- und EQuit-Exceptions.

Dokumentation für Mac-Bibliotheken

Die Dokumentation zu Mac OS X finden Sie unter Mac OS X Developer Library (EN). RAD Studio stellt keine Hilfe für die Bibliotheken bereit, die Sie evtl. für den Mac benötigen.

Sie können sich als Mac-Entwickler (kostenlos) beim Mac Dev Center (EN) registrieren. Als registriertes Mitglied des Apple Developer Program (Apple-Entwicklerprogramm) können Sie Ihre Apps im App Store vertreiben (dies ist eine Voraussetzung unter anderen, wie ein Entwicklerzertifikat und ein Bereitstellungsprofil). Weitere Informationen finden Sie unter http://developer.apple.com/programs/mac/gettingstarted/ (EN)

Bereitstellen der fertigstellten Mac OS X-Anwendung

Bevor Sie Ihre Mac OS X-Anwendung veröffentlichen, sollten Sie überprüfen, ob alle Einstellungen korrekt konfiguriert sind. Siehe Vorbereiten einer Mac OS X-Anwendung für die Bereitstellung.

Wenn Sie Ihre Mac OS X-Anwendung selbst verteilen möchten, können Sie die Anwendung einfach erzeugen und die resultierenden Binärdateien an Ihre Kunden weitergeben. Weitere Informationen finden Sie in der Apple-Dokumentation unter Distributing Applications Outside the Mac App Store (EN).

Wenn Sie Ihre Anwendung im Mac App Store veröffentlichen möchten, müssen Sie jedoch ein paar zusätzliche Schritte ausführen. Eine detaillierte Anleitung hierzu finden Sie unter Submit your application to the Mac App Store.

Mac OS X-Themen

Siehe auch

Codebeispiele