2014-01-08 6 views
20

Ich schreibe eine App für OS X und wenn ich die App archiviere und sie als Anwendung exportiere und versuche, sie zu öffnen, stürzt sie mit Code-Signatur ab Ungültiger Fehler.Mac OS X App stürzt mit Code-Signatur ab Ungültiger Fehler

Ich habe Mac App Distribution, Mac Installer Distribution, Entwickler-ID-Anwendung, Developer ID Installer-Zertifikate und Distribution Provisioning-Profil erstellt. Die App ist Sandboxed und ich habe es auf Mavericks getestet.

Exception Type: EXC_CRASH (Code Signature Invalid) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 

VM Regions Near 0x7fff71ce90a8 (cr2): 
    __LINKEDIT    00007fff67043000-00007fff67057000 [ 80K] r--/rwx SM=COW /usr/lib/dyld 
--> Submap     00007fff70000000-00007fff80000000 [256.0M] r--/rwx SM=PRV process-only VM submap 
unused shlib __DATA 00007fff708d3000-00007fff730dc000 [ 40.0M] rw-/rw- SM=COW system shared lib __DATA not used by this process 

Thread 0 Crashed: 
0 dyld       0x00007fff66fd1028 _dyld_start + 0 

Thread 0 crashed with X86 Thread State (64-bit): 
    rax: 0x000000000000000d rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000000000 
    rdi: 0x0000000000000000 rsi: 0x0000000000000000 rbp: 0x0000000000000000 rsp: 0x00007fff5eda9d30 
    r8: 0x0000000000000000 r9: 0x0000000000000000 r10: 0x0000000000000000 r11: 0x0000000000000000 
    r12: 0x0000000000000000 r13: 0x0000000000000000 r14: 0x0000000000000000 r15: 0x0000000000000000 
    rip: 0x00007fff66fd1028 rfl: 0x0000000000000201 cr2: 0x00007fff71ce90a8 

Logical CPU:  0 
Error Code:  0x020000f4 
Trap Number:  133 


Binary Images: 
0x7fff66fd0000 -  0x7fff67003817 dyld (???) <D1DFCF3F-0B0C-332A-BCC0-87A851B570FF> /usr/lib/dyld 

External Modification Summary: 
Calls made by other processes targeting this process: 
task_for_pid: 0 
thread_create: 0 
thread_set_state: 0 
Calls made by this process: 
task_for_pid: 0 
thread_create: 0 
thread_set_state: 0 
Calls made by all processes on this machine: 
task_for_pid: 47204 
thread_create: 0 
thread_set_state: 1299 

Das Verteilungsbereitstellungsprofil stimmt nicht. Wenn ich kein oder ein Team-Provisioning-Profil für Mac freigeben, funktioniert es. Ich benutze iCloud und In-App-Kauf.

Das Problem begann, als ich iCloud oder In-App Purchase aktiviert habe. Wenn ich sie deaktiviere, dann funktioniert alles. Wenn ich eines von ihnen aktiviere, wird mein Provisioning-Profil auf "none" gesetzt, und es funktioniert, aber wenn ich es in mein Distributionsprofil ändere, dann höre auf zu arbeiten.

Kann mir jemand sagen, was los ist?

+0

Zeigen Sie eine Kopie des Fehlers, den Sie erhalten. Überprüfen Sie außerdem die Einstellung "Code Signing" in Ihrem Xcode-Projekt, um sicherzustellen, dass die Signatur für jeden Buildtyp korrekt angewendet wird. – gaige

+0

Ich habe überprüft und ich denke, alles ist in Ordnung. Ich habe die Code Signing-Identität für das Mac-Entwickler-Anwendungs- und Bereitstellungsprofil von Drittanbietern auf das von mir erstellte Verteilungs-Bereitstellungsprofil festgelegt. –

+0

Ich habe auch andere Code Signing Flags auf --deep gesetzt, vielleicht ist das ein Problem? –

Antwort

1

Erstellen Sie dies als eine Beta-Version, die nur auf bestimmten Geräten ausgeführt werden kann? Ich habe genau diesen Fehler bei einem neuen Mac festgestellt und vergessen, meine Beta-Tester-Zertifikate zu installieren.

Ich hatte auch einige Probleme bei der Konfiguration meiner Profile. Als ich die Konfiguration gefunden habe, die funktioniert hat, habe ich diesen Screenshot erstellt, damit ich nicht vergessen werde. Vielleicht hilft es:

Screenshot of developer profiles

Edit: Vergewissern Sie sich auch alle Rahmenbedingungen mitgestalten, die Sie selbst kompilieren. Jeder Rahmen muss separat unterschrieben werden.

+0

Nein, ich habe es mit dem Verteilungszertifikat für alle Geräte kompiliert. Ich benutze, außer Apple Framework, Framework für Dropbox und Google API Client Framework. Wie soll ich das unterschreiben? –

+0

Ist Ihre CondenseProvisioning ein Verteilungsprofil? –

+1

Das Problem begann, als ich iCloud oder In-App Purchase aktivierte. Wenn ich sie deaktiviere, dann funktioniert alles. Wenn ich eines von ihnen aktiviere, wird mein Provisioning-Profil auf "none" gesetzt, und es funktioniert, aber wenn ich es in mein Distributionsprofil ändere, dann höre auf zu arbeiten. –

2

Möglicherweise haben Sie überhaupt kein Problem. Lesen Sie: Technische Q & A QA1884 Testing-Distribution Builds von Mac Apps

Nach dieser nicht in der Lage sein sollen, Installationspakete auf eigene zu erstellen. Sie müssen ein Paket erstellen und es über das Terminal überprüfen, aber es wird nicht funktionieren.

Übrigens gibt es einen Fehler in diesem Tech-Bericht. Möglicherweise müssen Sie den Pfad zur App in das sudo-Installationsprogramm -store -pkg Sample.pkg -target/ einfügen: sudo-installer -store -pkg /user/yourname/desktop/Sample.pkg -target

Dieses Beispiel geht davon aus, dass sich Ihr installer.pkg auf dem Desktop befindet

Wenn Sie alle Pässe erhalten, dann sind Sie gut.

Fuhr mich auch verrückt, als die letzte App, die ich im Juni hochgeladen habe das Pkg gerade ohne ein Problem installiert und die App, die es installiert arbeitete.

1

Ich hatte dieses Problem, aber zum Glück hatte ich zwei Apps - eine, die funktionierte und eine, die nicht funktionierte.Schließlich diese eine Veränderung es für mich festgelegt:

BAD:

Provisioning Profile: MacTeam Provisioning Profile: <the app's bundle id> 

GUT:

Provisioning Profile: Automatic 

Ich denke, das Profil nicht gültig ist, wenn Sie die App, um Menschen direkt zu senden. Automatisch funktioniert das Senden an Personen und das Senden an den App Store jedoch.

+0

Kann nicht finden automatisch statt es zeigt keine, ich habe keine, aber kein Glück – Swati