2016-04-05 10 views
6

Mam projekt zawierający inny cel (framework), który jest zależny od głównego projektu. Ramy te wymagają własnych ram, więc dodałem je za pomocą kartaginy. Projekt kompiluje i działa poprawnie na symulatorze, ale ja dostaję następujący błąd podczas uruchamiania go na urządzeniu fizycznym:Osadzanie ram wewnątrz struktury 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 

próbowałem this jednak jedynym rozwiązaniem jest dodanie Subframework do „ram wklejenia "do projektu na najwyższym poziomie, który nie jest opłacalny. Próbowałem zmodyfikować ustawienia Build -> Linking -> Dynamic Library Install name, ale to nie pomogło.

W jaki sposób osiągnąć, aby działało na iphone?

+0

chciałbym spojrzeć na ustawienie runpath ram. Zakładam, że mówimy o systemie iOS 8+? – trojanfoe

+0

@trojanfoe Tak, minimalna wersja to iOS 8, gdzie i do czego mam ją ustawić? – tofiffe

+0

jest w ustawieniach kompilacji. Najprawdopodobniej musisz dodać '@ loader_path', zakładając, że obie struktury znajdują się w tym samym katalogu. – trojanfoe

Odpowiedz

0

Również miałem do czynienia z tym problemem od jakiegoś czasu i miałem trzy poziomy hierarchii, gdzie najbardziej zewnętrzna "struktura parasolowa" nie powinna być dystrybuowana z innymi ramami. Jak rozwiązałem problem polegający na ustawieniu "Run Search Paths" w "Linking" w "Build Settings" każdego z "Umbrella Framework", aby wskazać miejsce docelowe "Copy Files" ustawione w "Fazach Build" (Ty dodać fazę kompilacji "Kopiowanie plików", a najlepiej ustawić jej "docelową lokalizację", a następnie dodać każdą "Pod-strukturę", którą chcesz osadzić).

Copy sub-framework to 'Frameworks'

Set 'Runpath Search Paths' to 'Frameworks'

+0

Po tym ustawieniu w mojej aplikacji program ładujący nie wyraził zgody na przesłanie ipa z komunikatami o błędach: "ERROR ITMS-90205:" Niepoprawny pakiet .Pobyłka pod adresem "appname.ipa/Frameworks/umbrellaFramework.framework "zawiera niedozwolone zagnieżdżone pakiety". " oraz "ERROR ITMS-90205:" Niepoprawny pakiet .Pakiet w "appname.ipa/Frameworks/umbrellaFramework.framework" zawiera niedozwolony plik "Frameworks" ".". W efekcie pozwoliłem, aby ramy parasolowe zostały skompilowane z pod-ramami i przeniesione do pod-frameworków po kompilacji i osadzone w projekcie. Skasuj także "Frameworki" reż. –

Powiązane problemy