Post

Replies

Boosts

Views

Activity

iOS simulator dyld/rpath/loader_path incorrectly set up by default?
I am trying to embed a framework and execute it on simulator: add framework, it is required by default, make it embed-and-sign If I start the app in simulator from XCode, all runs (by default it runs under debugger, so I assume a bit different environment). If I run it directly in simulator, using xcrun simctl, it crashes with framework binary not found (is that expected?). So I experimented [quite] a bit and updated the LOAD COMMAND to load the dylib with @loader_path (default is @rpath that xcode makes) - in such case the error is: Library not loaded: @loader_path/Frameworks/***.framework/*** Referenced from: <E13560A8-7387-308A-AF0F-F5107B737910> /Users/USER/Library/Developer/CoreSimulator/Devices/47B8C2D5-F78E-4976-B124-A25623DF14A7/data/Containers/Bundle/Application/5B5EA95D-44CD-4403-BE1E-FC6851B44917/App.app/App Reason: tried: '/Users/username/Library/Developer/CoreSimulator/Devices/47B8C2D5-F78E-4976-B124-A25623DF14A7/data/Containers/Bundle/Application/5B5EA95D-44CD-4403-BE1E-FC6851B44917/App.app/Frameworks/***.framework/***' (no such file), '/Library/Developer/CoreSimulator/Volumes/iOS_21E213/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 17.4.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/***.framework/***' (no such file) (terminated at launch; ignore backtrace) /Users/username/Library/Developer/CoreSimulator/Devices/47B8C2D5-F78E-4976-B124-A25623DF14A7/data/Containers/Bundle/Application/5B5EA95D-44CD-4403-BE1E-FC6851B44917/App.app/Frameworks/***.framework/*** is a local path on my dev machine, which sounds like a bug. Is that a bug? Should I open one somewhere for Apple? Then I played a bit more and found this https://stackoverflow.com/a/52535580/21881034 - "All you need to do is set the third party frameworks you are using in your custom framework for e.g:- socket.io-client-swift as Optional instead of Required under Link binary with Libraries in build Phases section" - which worked. What it does is replaces the load command with LC_LOAD_WEAK_DYLIB - so I assume it executes a bit later and probably again a different environment.
1
0
354
May ’24