Post

Replies

Boosts

Views

Activity

Reply to Running a Catalyst application via XCTest loads macOS specific frameworks
There has to be some difference between RealityKit and RealityFoundation because the first one is picked up from /System/iOSSupport/System/Library/Frameworks/ if this is the first path in DYLD_FRAMEWORK_PATH, but for second the mentioned override happens. Anyway I need more extensive study on dyld source for better understanding. The options I found so far: Replace LC_LOAD_DYLIB / LC_ID_DYLIB in the executable to point to a custom linker, which given the amount of hardcoded /usr/lib/dyld paths is probably not an option, and I would guess the linker location is also enforced by the kernel. Write a custom XCTest driver. Remove / rename RealityKit.framework from Xcode provided SharedFrameworks. This actually makes the executable start and run, and seems like a cheap workaround to allow running and testing RealityKit independent code. Will go with the last one for now.
May ’24
Reply to Running a Catalyst application via XCTest loads macOS specific frameworks
[quote='788794022, DTS Engineer, /thread/755856?answerId=788794022#788794022'] You could potentially get around that by weak linking to the specific symbols [/quote] That's what I meant by "weakly loading". [quote='788794022, DTS Engineer, /thread/755856?answerId=788794022#788794022'] what ends up bringing it RealityKit? [/quote] It's not that RealityKit is brought in regardless if it's used, but that a different incompatible framework is loaded if /System/iOSSupport/System/Library/Frameworks is prepended to DYLD_FRAMEWORK_PATH. dyld[44019]: find path "/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation" dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation" dyld[44019]: no pseudo-dylibs to search dyld[44019]: found: dylib-from-cache: (0x0A52) "/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation" // ... dyld[44019]: found '/Applications/Xcode.app/Contents/SharedFrameworks/RealityFoundation.framework/Versions/A/RealityFoundation' which invalidates PrebuiltLoader for '/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation' dyld[44019]: PrebuiltLoader 0x24059cf38 'RealityFoundation' not used because a file was found that overrides it dyld[44019]: using JustInTimeLoader 0x1143e1c20 for /System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation dyld[44019]: <91D6CFF8-6AC5-34BC-B1FE-83EA3CB7C7E3> /System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation // ... dyld[44019]: find path "/System/Library/PrivateFrameworks/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/System/iOSSupport/System/Library/Frameworks/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: no pseudo-dylibs to search dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/Users/spacecadet/projects/shapr3d/src/shapr3d/build/cmake/DerivedData/Shapr3D/Build/Products/Debug-maccatalyst/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: no pseudo-dylibs to search dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/Users/spacecadet/projects/shapr3d/src/shapr3d/build/products/Debug-maccatalyst/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: no pseudo-dylibs to search dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/Applications/Xcode.app/Contents/SharedFrameworks/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: no pseudo-dylibs to search dyld[44019]: found: dylib-from-disk-to-override-cache: "/Applications/Xcode.app/Contents/SharedFrameworks/RealityIO.framework/Versions/A/RealityIO" dyld[44019]: using JustInTimeLoader 0x1143e5410 for /Applications/Xcode.app/Contents/SharedFrameworks/RealityIO.framework/Versions/A/RealityIO dyld[44019]: <6194C114-E51C-38BF-AC13-23DF6A3435E3> /Applications/Xcode.app/Contents/SharedFrameworks/RealityIO.framework/Versions/A/RealityIO // ... dyld[44019]: find path "@rpath/RealityFoundation.framework/Versions/A/RealityFoundation" dyld[44019]: possible path(DYLD_FRAMEWORK/LIBRARY_PATH): "/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation" dyld[44019]: found: already-loaded-by-path: "/System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation" // and then in the end dyld[44019]: Symbol not found: _$s10RealityKit11__EntityRefV0A10FoundationE28__validInteractionIdentifier0E04UUIDVvg Referenced from: <6194C114-E51C-38BF-AC13-23DF6A3435E3> /Applications/Xcode.app/Contents/SharedFrameworks/RealityIO.framework/Versions/A/RealityIO Expected in: <91D6CFF8-6AC5-34BC-B1FE-83EA3CB7C7E3> /System/iOSSupport/System/Library/Frameworks/RealityFoundation.framework/Versions/A/RealityFoundation
May ’24