macOS-Anwendungsentwicklung

Aus RAD Studio
(Weitergeleitet von Mac OS X-Anwendungsentwicklung)
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 macOS erstellen und den 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 und den Mac. Siehe auch Arbeiten mit einem Mac und einem PC.

Der Delphi-Compiler für macOS 64 Bit ist DCCOSX64.

Konfigurieren der Entwicklungsumgebung für macOS

  • Physische Verbindung:
Stellen Sie sicher, dass RAD Studio eine Verbindung mit dem Ziel-Mac herstellen kann:
  • Wenn der macOS-App aber 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 auswä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 macOS:
    1. Klicken Sie im Projekte-Fenster mit der rechten Maustaste auf den Knoten Zielplattformen.
    2. Klicken Sie auf Plattform hinzufügen macOS 64 Bit.
    Die Option "macOS" ist nicht verfügbar, wenn die Anwendung die VCL verwendet (macOS 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.

Entwickeln von Anwendungen

Verwenden von Frameworks in Mac-Apps

In diesem Abschnitt werden einige für die Zielplattform macOS spezifische Aspekte bei der Entwicklung geräteübergreifender 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.

Ein Reihe 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 MacOS-C-RTL.

FireMonkey

Das FireMonkey-Framework eignet sich ideal für die macOS-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-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.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

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 macOS

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 macOS 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 macOS SDK
System::Byte
::Byte

Beispielsweise sollte der folgende Code 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 haben die meisten EExternal-Exceptions ihren Ursprung 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 überwacht. Sie müssen nur die Unit System.SysUtils in Ihren Code einbeziehen. Wenn der überwachende Thread eine Benachrichtigung zu einer 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 die Überwachung 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. (macOS 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

Sie können die macOS-Dokumentation von macOS Developer Library abrufen. 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 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/.

Bereitstellen der endgültigen macOS-Anwendung

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

Wenn Sie Ihre macOS-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 einige zusätzliche Schritte ausführen. Eine detaillierte Anleitung hierzu finden Sie unter Submit your application to the Mac App Store (EN).

Umgang mit der Projektbereitstellung (macOS 64 Bit)

Wenn die macOS-64-Bit-Zielplattform automatisch dem Demo-Anwendungsprojekt hinzugefügt wird, erbt die Bereitstellungsliste für die macOS-64-Bit-Zielplattform die nicht standardmäßigen Einträge von der macOS-32-Bit-Zielplattform nicht. Sie müssen die nicht standardmäßigen Einträge manuell der Projektbereitstellungsliste für die Zielplattform macOS-64-Bit hinzufügen. Führen Sie dazu die folgenden Schritte aus:

  1. Wählen Sie in der IDE Projekt > Bereitstellung aus, um den Bereitstellungs-Manager zu öffnen.
  2. Vergleichen Sie die Einträge unter Alle Konfigurationen - macOS-32-Bit-Plattform mit Alle Konfigurationen - macOS-64-Bit-Plattform.
Comparison.png
Z. B. das Beispielprojekt FMX.Mobile.VideoPlayback.

Falls in der Bereitstellungsliste für die Zielplattform macOS 64 Bit Einträge fehlen, führen Sie die folgenden Schritte aus, um macOS 64 Bit hinzuzufügen:

  1. Wählen Sie in dem Kombinationsfeld Alle Konfigurationen - macOS-32-Bit-Plattform aus.
  2. Klicken Sie auf die nicht standardmäßigen Einträge, für die OSX32, aber nicht OSX64 in Spalte der Plattformen vorhanden ist.
  3. Klicken Sie auf den Wert in der Spalte Plattformen, um die Ellipsen-Schaltfläche (Ellipsis.png) anzuzeigen.
  4. Klicken Sie auf die Ellipse.
  5. Wählen Sie OSX64 im Fenster Plattformen auswählen aus.
  6. Klicken Sie auf OK.

Wählen Sie im Kombinationsfeld Alle Konfigurationen - macOS-64-Bit-Plattform aus und stellen Sie sicher, dass der Wert der Spalte Remote-Name mit dem Wert in der Bereitstellungsliste für die Zielplattform macOS 32 Bit übereinstimmt.

macOS-Themen

Siehe auch

Codebeispiele