Xcode Build-Prozess und Signieren von Apps
Build einer Xcode-App
In einem Xcode-Projekt wird in den Targets das Bauen der App durch den Xcode-Build-Prozess konfiguriert. Ein Projekt kann mehrere Targets enthalten, typischerweise ein Target für die App selbst und separate Targets für die separaten, automatisierten Tests des Projektes:
Insbesondere in den Build Settings kann mit einer Vielzahl von Optionen auf das Verhalten der beim Build beteiligten Werkzeuge wie Compiler und Linker Einfluss genommen werden. Xcode gibt für alle Optionen Standardwerte vor, die für das gesamte Projekt oder für einzelne Build-Targets überschrieben werden können.
Beispielsweise wird über die Build-Einstellung Optimization Level konfiguriert, ob der Compiler optimierten Code generiert. Die Einstellungen können unterschieden werden für die Build-Konfiguration Debug und Release. So wird standardmäßig im Debug-Modus mit der Option Optimization Level die Code-Optimierung deaktiviert, um besser debugbaren Code zu erzeugen:
Den Xcode-Build führen Sie mit Product » Build ⌘B aus. Bei Problemen mit dem Xcode-Projekt kann es helfen, die Buildergebnisse zurückzusetzen. Dies erreichen Sie über Product » Clean.
Schemas: Xcode-Startkonfiguration
Über ein Schema wird der Start der App in Xcode konfiguriert. Dabei wird zwischen den Varianten unterschieden, die sich im Product-Menü finden. Mit Run wird die App regulär gestartet, Test führt die automatisierten Tests aus, Profile baut die App mit der Release-Konfiguration und startet den Profiler Instruments, Analyze lässt Xcode den Code nach potentiellen Programmierfehlern untersuchen und Archive erstellt einen Release-Build zum Verteilen der App:
Die Schema-Konfiguration kann mit Edit Scheme bearbeitet werden (Alternativ: mit ⌥ Product » Run wählen). Hier wird beispielsweise unter Build konfiguriert, welche Targets in welcher Variante gebaut werden:
Unter Run ist konfiguriert, mit welcher Build-Konfiguration beim Starten über Product » Run gebaut wird:
Signaturprozess und Ausführen von Apps auf dem Gerät
iOS-Hardwaregeräte führen im Gegensatz zum Simulator nur signierte App-Binaries aus. Voraussetzung für diesen Signaturprozess ist ein Provisoning Profile, das beim Start der App von Xcode automatisch erstellt und auf dem Gerät installiert wird.
Dazu ist eine kostenfreie Apple ID oder die kostenpflichtige Mitgliedschaft im Apple Developer Program notwendig. Die Mitgliedschaft wird benötigt, um Zusatzdienste (wie iCloud oder Push-Benachrichtigen) zu verwenden sowie für das Einstellen von Apps in den App Store.
Der Signaturprozess und die Beschaffung des Provisioning Profiles läuft automatisch ab, sofern im Target die Option Automatically manage signing aktiviert ist. Hier kann auch die zu verwendende Apple ID ausgewählt werden:
Für das Signieren der App wird dabei von Xcode automatisch ein privater Schlüssel erstellt. Dieser verbleibt lokal im Schlüsselbund. Zudem wird automatisiert ein Zertifikat beantragt und von Apple ausgestellt, welches das Ausführen von Apps, die mit dem privaten Schlüssel signiert wurden, erlaubt. Beides ist im macOS-Schlüsselbund unter Keys sichtbar:
Zudem wird der Unique Device Identifier (UDID) des Gerätes bei Apple registriert und ein Provisioning Profile erstellt, welches auf das Entwicklerzertifikat, die ID der App sowie die Geräte-IDs verweist:
Dieses Provisoning Profile wird auf dem Gerät installiert und erlaubt die Ausführung von App-Binaries, die mit dem privaten Schlüssel des zugehörigen Zertifikates signiert wurden.
Als Mitglied im Apple-Entwicklerprogramm können Sie die Entwicklerzertifikate und Geräte-IDs im Apple Developer Account unter Certificates, Identifiers & Profiles verwalten:
Weitere Informationen
-
Build settings referenceÜbersicht über alle Build Settings.
-
Signing workflowÜbersicht über den Signaturprozess für iOS-Apps.
-
Information Property List Key ReferenceÜbersicht über alle Info.plist-Konfigurationsoptionen.
-
Xcode Server and Continuous Integration GuideDokumentation zu Continuous Integration mit Xcode und macOS Server.