2015-06-05 2 views
6

Ich versuche ein Cocoa Touch Framework für iOS8 zu erstellen, das schließlich in Apps eingebettet und an den App Store gesendet wird. Daher ist es wichtig, dass der Release-Build NUR armv7 enthält aber der Debug-Build muss auch im Simulator laufen. Als solche habe ich this tutorial verfolgt und ich bin auf einem Laufzeitfehler schlagen, wenn sie versuchen, eine Anwendung im Simulator mit Rahmen eingebettet auszuführen:Benutzerdefiniertes Framework kann nicht im iOS-Simulator geladen werden (falsche Architektur)

dyld: Library not loaded: @rpath/TestFramework.framework/TestFramework 
    Referenced from: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/TestFramework 
    Reason: no suitable image found. Did find: /Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/Frameworks/TestFramework.framework/TestFramework: mach-o, but wrong architecture 

Allerdings, wenn ich auf den Rahmen binären sehen es beschwert

über
(/Users/jay/Library/Developer/CoreSimulator/Devices/97715157-EABB-4F38-8CA0-62768358DDD6/data/Containers/Bundle/Application/4856FC75-6C5B-4F7E-91A9-70CA1863D130/Test.app/) 

und laufen xcrun lipo -info TestFramework ich die Ausgabe Non-fat file: TestFramework is architecture: i386 so bin ich irgendwie verloren auf, wo jetzt gehen. Es läuft gut auf einem tatsächlichen iOS-Gerät.

+0

"an den App Store gesendet" und "enthält nur Armv7" sind gegenseitig exklusiv. – Droppy

+0

Entschuldigung, armv7/arm64. Wie auch immer, nur keine Simulatorarchitekturen. – Jay

+0

OK Ich würde annehmen, dass dies damit zusammenhängt, wie Ihr Xcode-App-Ziel von Ihrem Framework-Ziel abhängig gemacht wird. Wenn dies in der * Build Phase * korrekt eingestellt ist, erstellt Xcode die korrekte Architektur für die App (d. H. Gerät oder Simulator). Ich denke, dann müssen Sie es nur an den richtigen Ort im App-Paket kopieren (die iOS-App-Bundle-Struktur ist viel weniger formell als die OSX-App-Bundle-Struktur, aber es muss noch getan werden). Dies würde wahrscheinlich ein benutzerdefiniertes Skript in der Registerkarte * Build-Phasen * benötigen. – Droppy

Antwort

0

Basierend auf der Frage und Ihren Kommentaren ist die wahrscheinlichste Ursache dafür, dass Sie Ihr Framework für 32bit erstellen und es in eine 64bit-Anwendung verknüpfen. Wenn dies nicht der Fall ist, geben Sie bitte den gesamten Text Ihres Crash-Logs an.

Sie sollten Ihren Rahmen 4-fach-Fett bauen:

i386/iphonesimulator 
    x86_64/iphonesimulator 
    armv7/iphoneos 
    arm64/iphoneos 

Um es 4way Fett zu machen, werden Sie Ihre i386/x86_64 sim bauen mit ARMv7/arm64 manuell Lipo-zusammen müssen Geräteaufbau. Der Aufbau von 4-Wege-Fat mit zwei verschiedenen (von Xcode's Perspektive) Plattformen wird von Xcode nicht unterstützt.

Verwandte Themen