wake-up-neo.com

xcodebuild - codesign -vvvv sagt "Ressourcenumschlag ist veraltet"

Ich habe gerade meine xcode-Installation mit xcode 6.0.1 aktualisiert, um mit dem Kompilieren meiner App für ios8-Geräte zu beginnen. Aus irgendeinem Grund kann ich die App-Datei, die mit den folgenden Anweisungen generiert wird, niemals richtig signieren:

xcodebuild -project GrantM/GrantM.xcodeproj -configuration Release

es kompiliert den Code und scheint gut zu sein, aber läuft:

/usr/bin/codesign --verify -vvvv GrantM/GrantM.app

gib mir:

Program /usr/bin/codesign returned 1 : [GrantM/GrantM.app: resource envelope is obsolete]
Codesign check fails : GrantM/GrantM.app: resource envelope is obsolete

Überprüfen, ob der Code überhaupt signiert wurde: /usr/bin/codesign -dv GrantM/GrantM.app

kehrt zurück:

Executable=Documents/GrantM/GrantM/GrantM.app/GrantM
Identifier=com.grantapps.GrantM
Format=bundle with Mach-O universal (armv7 (16777228:0))
CodeDirectory v=20200 size=647 flags=0x0(none) hashes=23+5 location=embedded
Signature size=4336
Signed Time=24 Sep 2014 12:54:53 pm
Info.plist entries=34
TeamIdentifier=N3KKU46JLY
Sealed Resources version=2 rules=5 files=55
Internal requirements count=1 size=180

hat jemand anderes in OSX 10.9.5 & xcode 6.0.1 ähnliche Probleme gefunden? Oder bin ich nur ein bisschen dumm und mache etwas offensichtliches falsch?

außerdem konnte ich die in xcode generierte Debug-Version der App finden und konnte diese erfolgreich signieren, aber da es sich um eine Debug-Version handelt, funktioniert sie nicht für die Verteilung. Ich kann die von xcodebuild generierte App-Datei nicht manuell signieren.

vielen Dank für jegliche Hilfe oder Ratschläge im Voraus.

20
Grantism

Wenn Sie Mac OSX 10.9.5 oder höher verwenden, gibt es ein Problem mit der Betriebssystem-Codesignierung mit V2-Signatur.

Verwenden Sie also --no-strict-Flag mit codesign --verify, um diesen Fehler zu beheben.

Wenn Sie PackageApplication verwenden, um eine .ipa-Datei zu erstellen, dann 

Bearbeiten Sie das PackageApplication Perl-Skriptwerkzeug mit dem Befehl vi PackageApplication und aktualisieren Sie die Vorkommen von Funktionscodes, um den Parameter --no-strict zu übergeben.

Beispiel: 

mein $ result = runCmd ("/ usr/bin/codesign", "--verify", "--no-strict" , "-vvvv", $ plugin);

Ich war mit dem gleichen konfrontiert und erhielt folgende Antwort vom Apple Dev Team. Das Problem ist für mich gelöst. 

Das Befehlszeilentool "codesign" wurde in 10.9.5 und 10.10 geändert. Sie müssen dem Befehl die Option "--no-strict" übergeben (das Problem wurde gemeldet und wird behoben) . Um das Problem zu umgehen, speichern Sie bitte eine Kopie und ändern Sie PackageApplication so, dass „—no-strict“ an codesign übergeben wird. Sie können PackageApplication finden, indem Sie Folgendes ausführen: xcrun -sdk iphoneos -f Paketanwendung

28
Omkar

Ich habe ein Jenkins CI-System eingerichtet, um automatisierte Builds unserer iOS-App von unserem Git Repo aus bereitzustellen. Außerdem lade ich auch ein in Crashlytics eingebautes Protokoll zur Überwachung von Absturzprotokollen hoch/ein.

Mit Xcode 6.0 GM hat alles gut funktioniert, aber seit der Installation von Xcode 6.0.1 schlägt der Upload auf Crashlytics mit dem gleichen Fehler fehl. Ich bitte um ihre Unterstützung.

Ein Teil meines Build-Jobs verwendet xcodebuild, um ein Archiv der App zu generieren, und von diesem benutze ich auch PackageApplication, um eine .ipa-Datei zu erhalten, und PackageApplication gibt den Befehl codesign aus, der NICHT fehlschlägt. Ich verwende einen Distributions-Build, anstatt auch zu debuggen.

Hier ist der Befehl, den ich zum Reinigen/Archivieren der App in meinem Job verwende:

xcodebuild clean archive -scheme MyScheme -target MyTarget -sdk iphoneos -configuration AdHoc CODE_SIGN_IDENTITY="iPhone Distribution: MyCompany" PROVISIONING_PROFILE="UDID_Of_Provisioning_Profile"

Hier ist der Befehl, den ich verwende, um eine .ipa-Datei der App aus dem generierten Archiv zu packen/zu erhalten:

xcrun -sdk iphoneos PackageApplication "Path/to/MyApp.app" -o "/Path/To/MyApp.ipa" --sign "iPhone Distribution: MyCompany" --embed "Path/To/UDID_Of_Provisioning_Profile.mobileprovision"

Ändern Sie diese entsprechend Ihrem Setup und prüfen Sie, ob Sie den gleichen Fehler erhalten.

4
Sharkus

Befolgen Sie diese Schritte, um diesen Fehler zu vermeiden.

  1. Entfernen Sie CFBundleResourceSpecification = ResourceRules.plist aus Info.plist
  2. Vermeiden Sie --resource-rules in der codeign-Zeile und führen Sie die Codesignatur durch.
  3. Überprüfen Sie die App: codesign --verify -vvvv Payload/*
1
Febin

In meinem Fall überprüfte ich every framework und dylib, um herauszufinden, welches abgelehnt wird. Dann verzichte ich auf dieses Framework oder dylib und die ganze App hat meinen Arsch gerettet.

1
Nix Wang

In OS 10.10 muss ich --resource-rules in der codesign-Zeile entfernen

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve 
metadata=identifier,entitlements","--sign", $opt{sign});
0
Vid