Nachdem ich einige Optionen ausprobiert hatte, waren dies die Lösungen, die ich auf meinem CI-Server verwenden konnte:
Fügen Sie das Entwicklerzertifikat und den privaten Schlüssel sowie die automatisch generierten Bereitstellungsprofile in die CI-Umgebung ein:
Die Verwendung von Automatic signingerzwingt die Verwendung eines DeveloperZertifikats und auto-generated provisioning profiles. Eine Möglichkeit besteht darin, Ihr Entwicklungszertifikat und Ihren privaten Schlüssel (Anwendung -> Dienstprogramme -> Schlüsselbundzugriff) sowie die automatisch generierten Bereitstellungsprofile auf den CI-Computer zu exportieren. Eine Möglichkeit, die automatisch generierten Bereitstellungsprofile zu finden, besteht darin, zu navigieren ~/Library/MobileDevice/Provisioning\ Profiles/, alle Dateien in einen Sicherungsordner zu verschieben, Xcode zu öffnen und das Projekt zu archivieren. Xcode erstellt automatisch generierte Entwicklungsbereitstellungsprofile und kopiert sie in den Provisioning ProfilesOrdner.
xcodebuild archive ...erstellt ein .xcarchivesigniertes für Development. xcodebuild -exportArchive ...kann dann den Build für zurücktretenDistribution
Ersetzen Sie "Automatisch" durch "Manuell", wenn Sie auf einer CI-Umgebung aufbauen
Vor dem Aufruf xcodebuildeine Abhilfe ist alle Instanzen ersetzen ProvisioningStyle = Automaticmit ProvisioningStyle = Manualin der Projektdatei. sedkann für eine einfache Suche nach einem Ersatz in der pbxprojDatei verwendet werden:
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' <ProjectName>.xcodeproj/project.pbxproj
@thelvis hat auch ein Ruby-Skript erstellt , um dies mit dem xcodeprojEdelstein zu tun . Das Skript gibt Ihnen eine bessere Kontrolle darüber, was geändert wird.
xcodebuildverwendet dann die CODE_SIGN_IDENTITYim Projekt festgelegte Codesignaturidentität ( PROVISIONING_PROFILE_SPECIFIER) sowie die Bereitstellungsprofile ( ). Diese Einstellungen können auch als Parameter für bereitgestellt werden xcodebuildund überschreiben die im Projekt festgelegte Codesignaturidentität und / oder das Bereitstellungsprofil.
EDIT: mit Xcode 9, xcodebuildhat einen neuen Build - Einstellungen Parameter CODE_SIGN_STYLEzwischen auszuwählen Automaticund Manualso gibt es keine Notwendigkeit Instanzen der automatischen zum Suchen und Ersetzen mit manuellen in der Projektdatei, weitere Informationen in der WWDC 2017 Session 403 Was für Xcode und Xcode Server in Signing Neuen
Wechseln Sie zur manuellen Signatur
Die manuelle Signatur bietet vollständige Kontrolle über die verwendeten Codesignaturidentitäten und Bereitstellungsprofile. Es ist wahrscheinlich die sauberste Lösung, aber mit dem Nachteil, alle Vorteile der automatischen Signatur zu verlieren.
Um mehr über das Signieren von Code mit Xcode 8 zu erfahren, empfehle ich diesen Artikel sowie die WWDC2016-Sitzung 401 - Was ist neu beim Signieren von Xcode- Apps ?