Ich habe eine Xamarin Forms-Anwendung, die Android und iOS unterstützt. Ich habe Jenkins-Builds erstellt, um sie zu kompilieren. Alle Android-Builds funktionieren. Der iOS Debug Build kompiliert gut. Die Ad-Hoc-Erstellung kann jedoch nicht vollständig für ein iPhone-Ziel erstellt werden. Es scheint bei der Codeignierung zu versagen. Es funktioniert, wenn ich den iPhoneSimulator ziele, aber wenn ich iPhone-Gerät ziele, scheitert es.
Die Ausführung des Werkzeugs / usr / bin / codesign wurde mit Argumenten gestartet: -v --force --sign 81088F8E194139DC4C6CE640716944E41FB0709F --entitlements "/Users/Shared/Jenkins/.jenkins/workspace/{project Pfad} / obj / iPhone / Ad -Hoc / Entitlements.xcent "--deep" /Users/Shared/Jenkins/.jenkins/workspace/{Projectpfad} /bin/iPhone/Ad-Hoc/AppName.app " bin / iPhone / Ad-Hoc / AppName.app: Fehler: /Users/Shared/Jenkins/.jenkins/workspace/{project Pfad} /bin/iPhone/Ad-Hoc/AppName.app: unbekannter Fehler -1 = ffffffffffffffff [ /Users/Shared/Jenkins/.jenkins/workspace/{project Pfad} /iDriverMobile.iOS.csproj]
Wenn ich die Lösung in Visual Studio direkt im Jenkins Workspace-Ordner öffne, so dass sie die exakt gleichen Dateien verwendet, dann funktioniert das Kompilieren gut, was wirklich frustrierend ist.
Wenn man sich die Unterschiede zwischen den beiden Ausgaben anschaut, sieht es so aus, als hätte der Arbeits-Build (aus Studio) eine AOT-Ausgabe für alle Assemblies, die so aussehen:
Mono-Ahead-of-Time-Compiler - Kompilieren der Assembly /Users/Shared/Jenkins/.jenkins/workspace/{project path} /obj/iPhone/Ad-Hoc/mtouch-cache/32/Build/OpenNETCF.Google.Analytics. dll
Der fehlgeschlagene Build hat keinen von diesen. Stattdessen hat es ein paar Zeilen, die so aussehen:
MTOUCH: Warnung MT0095: Aot-Dateien konnten nicht in das Zielverzeichnis /Users/Shared/Jenkins/.jenkins/workspace/{project path} / obj / iPhone / Ad-Hoc / mtouch-cache / 64 / Build kopiert werden / Msym / Msym / tmp: Prozess konnte nicht gestartet werden. [/Users/Shared/Jenkins/.jenkins/workspace/{project Pfad} /AppName.csproj]
Der schlimmste Teil von allem ist, dass diese Builds funktioniert haben, aber dann habe ich den Mac Mini neu gestartet, auf dem Jenkins läuft und die Dinge gingen bergab. Ich kann nicht herausfinden, was der Unterschied zwischen dem, was Studio macht, und dem Kommandozeilenaufruf zu msbuild ist. Sie zeigen beide auf die gleichen Binärdateien.
Zusätzliche Informationen Dies schlägt immer noch mit den neuesten Updates ab heute (24.05.17) fehl. Dies ist die Umgebung:
Was nicht repariert es:
xbuild
anstelle von msbuild
Versuchen Sie, den abgeleiteten Datenordner in DerivedData
Ihrer App zu löschen. Es sieht wie YourAPP_ dasfdsfsdafdsasfdsaf
aus, laut dies vom Apple Developer Forum.
Der DerivedData
Datenordner befindet sich unter ~/Library/Developer/Xcode/DerivedData/
Wenn dies nicht funktioniert, weisen alle Symptome auf ein Problem mit der Signatur des Zertifikats (auch Signatur genannt) hin.
Es scheint so, als ob /usr/bin/codesign
, wenn es von der Befehlszeile aus kompiliert wurde, nicht auf die Signaturidentität 81088F8E194139DC4C6CE640716944E41FB0709F
zugreifen kann. Es könnte viele verschiedene Gründe geben, leider:
codesign
darf nicht auf die Signatur zugreifen
Identität. Versuchen Sie, die folgenden Code-Snippets hinzuzufügen, bevor Sie msbuild
ausführen, vorausgesetzt, Ihre Signaturidentität befindet sich im Schlüsselbund ~/Library/Keychains/login.keychain
:
Es ist keine gute Idee, das Schlüsselbundpasswort im Buildskript zu speichern. Sie können dieses Handbuch , um sie zu verstecken.
Tags und Links jenkins visual-studio xamarin.ios xamarin