Mac OS X-Anwendungsentwicklung

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Geräteübergreifende Anwendungen - Index

Mit Appmethod 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 Appmethod 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 Object Pascal-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 Appmethod 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 Object Pascal- oder Appmethod C++-Anwendung erstellen, wird von Appmethod 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.
  • 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:

Erforderliche Apple-IDs

Entwickeln, Testen und eigene Distribution von OS X-Apps: Apple verlangt nicht, dass Sie sich beim Apple Developer Program (Apple-Entwicklerprogramm) anmelden oder daran teilnehmen. Sie brauchen zwar eine Apple-ID, um die Xcode-IDE vom App Store herunterzuladen, aber weder Xcode noch Ihr Computer muss in irgendeiner Form registriert sein. Sie müssen aber dem Mac-Entwicklerprogramm beitreten, wenn Sie Ihre Apps im Mac App Store vertreiben möchten. (Ebenso müssen Sie dem iOS-Entwicklerprogramm beitreten, wenn Sie Ihre Apps im iOS App Store vertreiben möchten.) Die Teilnahme am Mac-Entwicklerprogramm berechtigt Sie, auf eine Fülle von Entwicklerressourcen zuzugreifen, die sonst für Sie nicht verfügbar wären.

Sie benötigen ggf. die folgenden IDs, die Sie von Apple Computers erhalten und die von Apple Computers geändert werden können:

Apple-ID und iTunes-ID

Um Apps (aus dem Mac App Store) oder Musik (vom iTunes Store) zu beziehen, müssen Sie eine Apple-ID (kostenlos) erwerben und ein iTunes-Konto (kostenlos) eröffnen:

Apple-Entwickler-ID

Um Mac-Apps im Mac App Store zu vertreiben, müssen Sie:

  • Eine Apple Developer ID (Apple-Entwickler-ID) erwerben (kostenlos)
  • Mitglied bei einem Mac Developer Program (Mac-Entwicklerprogramm) werden ($ 99 pro Jahr für einen Einzelentwickler)
    Das Mac-Entwicklerprogramm umfasst die Tools, die auf dem Mac vorhanden sein müssen (wie z. B. Xcode und das SDK), sowie die Online-Dokumentation und den Support. Eigene Mac-Entwicklerprogramme sind für Einzelpersonen, Unternehmen und Universitäten erhältlich. Die Kosten für die Registrierung bei Gruppenprogrammen sind pro Person geringer als die Registrierung als Einzelentwickler.
  • Signierungszertifikate von https://developer.apple.com/account/mac/certificate/ (Mac-Dienstprogramm für App-Entwicklerzertifikate) anfordern.
    Sie benötigen u. U. die folgenden Arten von Signierungszertifikaten (hier mit hypothetischen Zertifikatsnamen):
    • Entwicklungszertifikat:
      • Mac App-Entwicklungszertifikat
    • Distributionszertifikate:
      • Mac App Store-Zertifikate:
        • Mac App-Zertifikat
        • Mac-Installationszertifikat
      • Entwickler-ID-Zertifikate:
        • Entwickler-ID-Anwendungszertifikat
        • Entwickler-ID-Installationszertifikat

Sie müssen die Namen beider Distributionszertifikate auf der Seite Bereitstellung angeben, wenn Sie ein Produkt für die Übermittlung an den Mac App Store erzeugen möchten.

Sandboxing ist für die Übermittlung von Apps an den Mac App Store erforderlich

Per Sandboxing wird der Zugriff einer Anwendung auf Systemressourcen beschränkt, und Apple kann damit verhindern, dass Apps unsicher sind oder Malware enthalten.

Verwenden der IDE für Sandboxing, Codesignierung und Vorbereiten der App (empfohlene Methode)

Anwendungen, die an den Mac App Store übermittelt werden sollen, müssen den Apple-Sandboxing-Anforderungen entsprechen. Die empfohlene Methode ist die Verwendung der IDE, wie im Folgenden beschrieben. Die manuellen Schritte werden nur kurz gestreift. Die neuesten Informationen dazu finden Sie auf den Apple-Webseiten.

Die Appmethod-IDE kann Sandboxing-Berechtigungen verarbeiten und die erforderliche Codesignierung und das Produkt-Build anhand Ihres Mac-Entwicklerzertifikats für Fremdhersteller bzw. Ihres Mac-Installationszertifikats für Fremdhersteller durchführen.

Dazu müssen Sie die folgenden IDE-Seiten ausfüllen:

  • Berechtigungsliste – Zum Festlegen der Zugriffsberechtigungen für Ihre Anwendung.
  • Bereitstellung – Für die Codesignatur und das Produkt-Build vor der Übermittlung Ihrer Anwendung an den Mac App Store.

1. Beziehen der Zertifikate und Eingeben der Zertifikate in die IDE

Für die Übermittlung von Apps an den Mac App Store sind spezielle Zertifikate erforderlich:

  1. Wenn Sie Xcode auf dem Mac oder das Mac-Dienstprogramm für App-Entwicklerzertifikate verwenden (https://developer.apple.com/certificates), fordern Sie die folgenden Zertifikate an:
    • Ein Mac App-Distributionszertifikat
    • Ein Mac-Installationszertifikat
    Dazu benötigen Sie ein Apple-Entwicklerkonto (siehe Erforderliche Apple-IDs).
  2. Stellen Sie sicher, dass das Mac App-Distributionszertifikat in Ihrem Mac-Schlüsselbund installiert ist (doppelklicken Sie im Finder auf die heruntergeladene .cer-Datei).
  3. Weisen Sie auf der Seite Berechtigungsliste die gewünschten Berechtigungen (Systemzugriffsrechte) für Ihre Anwendung zu. Eine .entitlements-Datei wird automatisch erstellt, und Sie können die Berechtigungsliste für Ihre Anwendung auf der Seite Berechtigungsliste in den Projektoptionen bearbeiten.
  4. Geben Sie auf der Seite Bereitstellung Ihr Mac App-Distributions- und Mac-Installationszertifikat ein.

2. Signieren des Codes, Erzeugen und Bereitstellen Ihrer Mac OS X-Anwendung

Hinweis: Vor der Codesignierung und Erzeugung Ihrer Anwendung müssen Sie die normalen Build-Konfigurationsschritte in Appmethod ausführen:

  1. Legen Sie OS X als Zielplattform fest, weisen Sie ein Verbindungsprofil und ein SDK zu, und testen Sie die Verbindung. (Siehe Aktivieren und Konfigurieren der Zielplattform.)
  2. Legen Sie die Versionsinformationen fest.

Gehen Sie folgendermaßen vor, um das endgültige Produkt-Build kurz vor der Übermittlung Ihrer Anwendung an den Mac App Store vorzubereiten:

  1. Aktivieren Sie in der Projektverwaltung im Knoten Konfiguration der OS X-Zielplattformhierarchie den Knoten Anwendungs-Store:
    MacAppStore.png
    Damit wird Ihr Appmethod-Build für die Weitergabe an den Ziel-Mac als .pkg-Datei konfiguriert.
  2. Erzeugen Sie das Projekt in der IDE.
  3. Stellen Sie Ihr Projekt mit einem der folgenden Verfahren bereit:
    • Projekt > Bereitstellung – Klicken Sie im Bereitstellungs-Manager auf den Befehl "Weitergeben".
    • Start > Start (F9)
      Bei der Bereitstellung Ihrer Anwendung für die Mac App Store-Zielplattform wird Ihr Projekt vom PC auf den Mac kopiert, die Codesignierung anhand der angegebenen Zertifikate durchgeführt und ein Produkt-Build erstellt, das aus einer .pkg-Datei besteht, die sich auf dem Mac im selben Verzeichnis wie die .app-Datei befindet.
    Nun hat Ihre Anwendung eine Codesignatur und kann von Ihrem Mac an den Mac App Store übermittelt werden.
  4. Laden Sie auf dem Mac das App-Paket mit Application Loader und iTunes Connect hoch.

Manuelle Schritte für das Sandboxing, die Codesignierung und das Erzeugen Ihrer Anwendung

Hinweis: Die Verwendung der IDE (wie oben beschrieben) ist das empfohlene Vorgehen für das Sandboxing, die Codesignierung und das Erzeugen Ihrer Anwendung (zur Übermittlung an den Mac App Store). Manuelle Schritte sind viel komplexer als die Verwendung der IDE und werden hier nur für diejenigen kurz umrissen, die außerhalb der IDE arbeiten müssen. Die neuesten Informationen dazu finden Sie auf den Apple-Webseiten.

Wenn Sie Ihre App nicht mit der IDE für den Mac App Store vorbereiten, können Sie die erforderlichen Schritte auf Ihrem Mac ausführen. Dieser Abschnitt enthält eine grundlegende Einführung in diesen Vorgang, die Details finden Sie in der Apple-Dokumentation (siehe die entsprechenden Links).

Auf dem Mac müssen Sie eine <Projekt>.entitlements-Datei erstellen und diese in das Anwendungspaket platzieren, das Paket mit einer Codesignatur versehen, es komprimieren und bei Apple einreichen.

Anforderungen von Apple

Im Folgenden sind die erforderlichen Elemente und die relevanten Informationen von Apple aufgeführt:

Manuelles Signieren des Codes und Erzeugen einer OS X-Anwendung auf dem Mac

Wenn Sie Ihre Anwendung im Mac App Store bereitstellen möchten, ist eine Codesignatur und eine Bereitstellung der Voraussetzungen erforderlich. Sie können diese Schritte entweder in der IDE (weiter oben beschrieben) oder manuell (indem Sie die folgenden allgemeinen Anleitungen befolgen) durchführen.

Hinweise:

  • Sie müssen zum Bereitstellen von Apps im Mac App Store ein Distributionszertifikat von http://developer.apple.com/certificates anfordern.
  • Dazu benötigen Sie ein Apple-Entwicklerkonto (siehe Erforderliche Apple-IDs).
  • Stellen Sie sicher, dass das Zertifikat in Ihrer Schlüsselkette installiert ist (doppelklicken Sie im Finder auf die .cer-Datei).
  • Sie benötigen eine <Projekt>.entitlements-Datei für das Mac-Sandboxing (diese Datei wird auf der Seite Berechtigungsliste erstellt, falls Sie die IDE verwenden).

So signieren Sie Ihren Code und erzeugen ein Produktinstallationsprogramm für Ihre Mac OS X-Anwendung manuell:

  1. Erzeugen Sie die Anwendung in der IDE, und stellen Sie sie an Mac OS X (Mountain Lion) bereit.
  2. Öffnen Sie auf dem Mac ein Terminalfenster.
  3. Wechseln Sie in das Verzeichnis "scratch-dir" von PAServer, z. B.:
    Applications/Embarcadero/PAServer/n.n/scratch-dir/machinename-remoteprofilename/
  4. Führen Sie die folgenden Befehle aus:
  • Codesignatur für die Anwendung:
sudo codesign -f -v -s "Mac Developer: FirstName LastName" "AppName.app"
  • Führen Sie "productbuild" aus, um ein Installationspaket zu erstellen:
sudo productbuild --component "AppName.app" /Applications --sign "Mac Developer: FirstName LastName" --product "AppName.app/Contents/info.plist" AppName.pkg

Übertragen Ihrer Mac-Anwendung an den App Store

Sie können Ihre Mac-Anwendungen außerhalb des Mac App Store vertreiben, aber wenn Sie Ihre Anwendung im Mac App Store verkaufen möchten, müssen Sie ein paar zusätzliche Schritte ausführen.

  1. Sie benötigen ein iTunes Connect-Konto. Weitere Informationen finden Sie im "iTunes Connect Developer's Guide" unter: Overview of iTunes Connect
  2. Erstellen Sie ein 512x512 großes Programmsymbol (.ico-Datei), und fügen Sie es Ihrem Projekt hinzu.
  3. Erzeugen und debuggen Sie Ihre Mac OS X-Anwendung in Appmethod.
  4. Erwerben Sie die benötigten Apple-Entwicklerzertifikate (siehe Erforderliche Apple-IDs).
  5. Füllen Sie die Berechtigungsliste unter "Projekt > Optionen" und die Seite Bereitstellung entweder unter "Projekt > Optionen" oder "Tools > Optionen" aus.
  6. Erstellen Sie ein endgültiges Build, und stellen Sie es mit dem Bereitstellungs-Manager auf dem Mac bereit.
  7. Übertragen Sie mit Xcode oder dem Mac Application Loader Ihr Anwendungsarchiv (.pkg) an den Mac App Store (den URL finden Sie weiter unten).
  8. Verwalten Sie Ihre App im App Store mit iTunes Connect.


Nützliche Apple-URLs

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.


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 Appmethod 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.

Appmethod 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 Appmethod 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 Appmethod C++-Projekt in Appmethodeinbezogen werden. Einige Frameworks basieren auf Objective-C (wie Foundation) und können nur über Object Pascal-Interfaces verwendet werden (siehe den folgenden Abschnitt).

Damit Sie ein Mac-C-Framework in ein Appmethod-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.bmp (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 Object Pascal-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.

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. Appmethod 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 Mac Developer Program (Mac-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/.

Mac OS X-Themen

Siehe auch


Codebeispiele