Die Ad-Hoc-Kennung für das Gerät ist in Studio erfolgreich, in Jenkins fehlgeschlagen

8

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:

  • Mac OS X 10.12.5
  • Listenelement
  • XCode 8.3.2
  • Xamarin.iOS 10.10.0.36
  • Visual Studio 2017-Community für Mac 7.0.1 (Build 24)
  • Mono 5.0.1.1

Was nicht repariert es:

  • Erstellen eines neuen Jenkins Builds
  • Ändern des Jenkins-Workspace-Pfads
  • Öffnen von Berechtigungen (777) für den gesamten Jenkins-Ordner
  • Aktivieren von LLVM
  • Deaktivieren aller Verknüpfungen
  • Jenkins vollständig deinstallieren und neu installieren
  • Verwendung von xbuild anstelle von msbuild
  • Viel fluchen
  • Mein Mittelfinger
ctacke 23.05.2017, 22:08
quelle

1 Antwort

1

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:

  • keychain wurde gesperrt
  • codesign darf nicht auf die Signatur zugreifen Identität.
  • mehrere Identitäten existieren in Schlüsselbund und falscher Signatur Identität wurde ausgewählt
  • Falsche Bestimmung Das Profil wurde für Ad-hoc-Build angepasst.

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 :

%Vor%

Es ist keine gute Idee, das Schlüsselbundpasswort im Buildskript zu speichern. Sie können dieses Handbuch , um sie zu verstecken.

    
Jifeng Zhang 01.06.2017, 12:30
quelle