Xcode Build-Prozess und Signieren von Apps

von @ralfebert · veröffentlicht am 22. Juni 2018

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:

Targets

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:

Xcode Build Settings

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:

Xcode Scheme

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:

Xcode Scheme: Build

Unter Run ist konfiguriert, mit welcher Build-Konfiguration beim Starten über Product » Run gebaut wird:

Xcode Scheme: Run

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:

Automatically Manage Signing

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:

Zertifikat im macOS-Schlüsselbund

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:

Zertifkate, App-ID, UDIDs -> Provisioning Profile

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:

Verwaltung von Entwicklerzertifikaten und Geräte-IDs im Apple-Entwicklerprogramm

Weitere Informationen