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 entwickeln und den Mac als die erforderliche Zwischenplattform für iOS-Apps verwenden.

Hardwareseitig benötigen Sie zusätzlich zu dem 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 FireMonkeyPlattformvoraussetzungen 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.EXE.

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

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 Object Pascal- oder Appmethod C++-Desktop-Anwendung erstellen, wird von Appmethod die Standardzielplattform Win32 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:
    • 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-Geräte.

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- 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 stellt die Tools, die auf dem Mac vorhanden sein müssen (wie z.B. Xcode und das SDK), sowie die Online-Dokumentation und den Support bereit. 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 können Sie von https://developer.apple.com/support/mac/developer-certificates.html (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 in 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)

Wenn Sie Anwendungen an den Mac App Store übermitteln möchten, müssen sie 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 behandeln 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 (das letzte nur für C++), und testen Sie die Verbindung. (Siehe Aktivieren und Konfigurieren der Zielplattform.)
  2. Legen Sie die Versionsinformationen fest.

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

  1. Aktivieren Sie in der Projektverwaltung der OS X-Zielplattformhierarchie innerhalb des Knotens Konfiguration den Knoten Anwendungs-Store:
    MacAppStore.png
    Damit wird Ihr Appmethod-Build für die Lieferung als .pkg-Datei an den Ziel-Mac 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 Codesignatur 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.
    Jetzt 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 Projektname.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 .entitlements-Datei (XML) 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 geben Sie sie an Mac OS X (Lion oder Mountain Lion) weiter.
  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
Nützlicher Apple-URL

Ü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

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

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

Symbole für OS X-Apps

Für Ihre Mac-App ist ein Programmsymbol erforderlich. Wählen Sie zum Zuweisen einer Symbolgruppendatei (.icns-Datei) für Ihre Anwendung Projekt > Optionen > Anwendung.

Appmethod enthält Personality-spezifische .icns-Dateien für Mac-Anwendungen; die .ico- und .icns-Dateien befinden sich in den Verzeichnissen $(BDS)\bin und $(BDS)\bin64. Jede .icns-Datei enthält eine Gruppe von Symbolen in unterschiedlichen Größen, die intern auf dem Mac für verschiedene Versionen oder Standards der Anwendung ausgewählt werden:

  • delphi_PROJECTICNS.icns DelphiPROJICON.png
  • cbuilder_PROJECTICNS.icns CbuilderPROJICON.png

Beim Entwickeln einer OS X-Anwendung erstellt die IDE eine .icns-Datei aus der .ico-Datei. Die IDE wählt automatisch ein Symbol aus der .ico-Datei aus, konvertiert das Symbol in das .icns-Format (mithilfe des internen Hilfsprogramms ico2icns) und nimmt das 512x512-Symbol in das Mac-App-Paket auf.

Symbolgrößen für Retina- und Nicht-Retina-Displays

Für die Übermittlung Ihrer App an den Mac App Store muss die Symbolgruppendatei ein Symbol mit einer Auflösung von 512x512 Pixel für Nicht-Retina-Displays enthalten. Sie können auch ein Symbol mit einer Auflösung von 1024x1024 Pixel für Retina-Displays hinzufügen.

  • Auf dem Mac können Sie mit Icon Composer Symbole im Retina-Stil (1024x1024) erstellen.
  • Weitere Informationen über 1024x1024-Symbole finden Sie unter Stackoverflow.

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