2016-04-05 4 views
6

Ich habe ein Projekt, das ein anderes Ziel (Framework) enthält, das eine Abhängigkeit vom Hauptprojekt ist. Dieses Framework benötigt eigene Frameworks, also habe ich sie mit Karthago hinzugefügt. Das Projekt kompiliert und läuft auf Simulator in Ordnung, aber die folgende Fehlermeldung immer ich bin, wenn es auf einem physischen Gerät ausgeführt wird:Einbetten von Frameworks in ein Framework iOS

dyld: Library not loaded: @rpath/Subframework.framework/Subframework 
    Referenced from: /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/MyAppSDK 
    Reason: no suitable image found. Did find: 
    /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework: mmap() error 1 at address=0x00798000, size=0x00060000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework 

ich this versucht haben, aber die einzige Lösung ist, die Subframework auf „Embed-Frameworks hinzufügen "zu Top-Level-Projekt, das ist nicht lebensfähig. Ich habe versucht, Build-Einstellungen -> Linking -> Dynamic Library Install Name zu ändern, aber es hat nicht geholfen.

Wie kann erreichen, dass es auf dem iPhone funktioniert?

+0

ich bei Einstellung der RUNPATH des Rahmens aussehen würde. Ich nehme an, wir sprechen über iOS 8+? – trojanfoe

+0

@trojanfoe ja, die Mindestversion ist iOS 8, wo und zu was soll ich es einstellen? – tofiffe

+0

ist es in den Build-Einstellungen. Sie müssen wahrscheinlich nur '@ loader_path' hinzufügen, vorausgesetzt, beide Frameworks befinden sich im selben Verzeichnis. – trojanfoe

Antwort

0

Ich war auch mit diesem Problem für einige Zeit konfrontiert und ich hatte eine dreistufige Hierarchie, in der das äußerste 'Umbrella Framework' nicht mit den anderen Frameworks verteilt werden sollte. Wie ich es gelöst habe, indem ich die 'Suchpfade ausführen' unter 'Verknüpfung' in 'Buildeinstellungen' jedes 'Umbrella Framework' auf das Ziel 'Dateien kopieren' gesetzt habe, das in 'Buildphasen' (Du muss eine 'Copy Files'-Build-Phase hinzufügen und vorzugsweise sein' Ziel 'auf' Frameworks 'setzen, dann fügen Sie jedes' Sub-Framework 'hinzu, das Sie einbetten möchten.

Copy sub-framework to 'Frameworks'

Set 'Runpath Search Paths' to 'Frameworks'

+0

Nach dieser Anordnung in meiner Anwendung, der Application Loader weigerte sich, den ipa mit Fehlermeldungen hochladen: 'ERROR ITMS-90205: "Ungültige Paket. Das Bündel bei' appname.ipa/Frameworks/UmbrellaFramework.framework 'enthält nicht erlaubte verschachtelte Pakete ".' und 'ERROR ITMS-90205: "Ungültiges Bundle. Das Bundle unter' appname.ipa/Frameworks/umbrellaFramework.framework 'enthält die nicht erlaubte Datei' Frameworks '".'. Am Ende habe ich das Umbrella-Framework mit den Sub-Frameworks kompiliert und die Sub-Frameworks nach der Kompilierung daraus entfernt und in das Projekt eingebettet. Löschen Sie auch "Frameworks" dir. –

Verwandte Themen