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 signing
erzwingt die Verwendung eines Developer
Zertifikats 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 Profiles
Ordner.
xcodebuild archive ...
erstellt ein .xcarchive
signiertes 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 xcodebuild
eine Abhilfe ist alle Instanzen ersetzen ProvisioningStyle = Automatic
mit ProvisioningStyle = Manual
in der Projektdatei. sed
kann für eine einfache Suche nach einem Ersatz in der pbxproj
Datei verwendet werden:
sed -i '' 's/ProvisioningStyle = Automatic;/ProvisioningStyle = Manual;/' <ProjectName>.xcodeproj/project.pbxproj
@thelvis hat auch ein Ruby-Skript erstellt , um dies mit dem xcodeproj
Edelstein zu tun . Das Skript gibt Ihnen eine bessere Kontrolle darüber, was geändert wird.
xcodebuild
verwendet dann die CODE_SIGN_IDENTITY
im Projekt festgelegte Codesignaturidentität ( PROVISIONING_PROFILE_SPECIFIER
) sowie die Bereitstellungsprofile ( ). Diese Einstellungen können auch als Parameter für bereitgestellt werden xcodebuild
und überschreiben die im Projekt festgelegte Codesignaturidentität und / oder das Bereitstellungsprofil.
EDIT: mit Xcode 9, xcodebuild
hat einen neuen Build - Einstellungen Parameter CODE_SIGN_STYLE
zwischen auszuwählen Automatic
und Manual
so 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 ?