There appears to be an interoperability issue between Xcode 14 and iOS 11 devices. Specifically with libswiftCoreGraphics.dylib. I build a Swift based framework that has a deployment target of iOS 11. When I build the SDK with Xcode 13.4.1 and run the unit tests on iOS 11, everything works as expected. When I switched to Xcode 14, it continually fails when attempting to run the unit tests on an iOS 11 device. I began digging into this and was trying to determine if it was an issue with some dependency or something in my project.
I created a test project with Xcode 13.4.1, Xcode14-iOS11_Bug, which consists of a simple Swift application and one unit test file. When I run the unit from Xcode 13.4.1 targeting an iPhone 7 running iOS 11.4.1, it runs as expected.
I then opened the same project with Xcode 14 and attempted to run the unit test I am greeted with the same error about libswiftCoreGraphics.dylib not being loaded.
2022-09-14 15:19:00.871686-0400 Xcode14-iOS11_Bug[616:100103] Failed to load test bundle from file:///var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest/: Error Domain=NSCocoaErrorDomain Code=3587 "dlopen_preflight(/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest/Xcode14-iOS11_BugTests): Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib
Referenced from: /private/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/Frameworks/libXCTestSwiftSupport.dylib
Reason: image not found" UserInfo={NSLocalizedFailureReason=The bundle is damaged or missing necessary resources., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSFilePath=/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest/Xcode14-iOS11_BugTests, NSDebugDescription=dlopen_preflight(/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest/Xcode14-iOS11_BugTests): Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib
Referenced from: /private/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/Frameworks/libXCTestSwiftSupport.dylib
Reason: image not found, NSBundlePath=/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest, NSLocalizedDescription=The bundle “Xcode14-iOS11_BugTests” couldn’t be loaded because it is damaged or missing necessary resources.}
2022-09-14 15:19:01.221551-0400 Xcode14-iOS11_Bug[616:100103] The bundle “Xcode14-iOS11_BugTests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
2022-09-14 15:19:01.221599-0400 Xcode14-iOS11_Bug[616:100103] (dlopen_preflight(/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/PlugIns/Xcode14-iOS11_BugTests.xctest/Xcode14-iOS11_BugTests): Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib
Referenced from: /private/var/containers/Bundle/Application/5E87802C-9C84-48FD-9D2D-8441983B61E8/Xcode14-iOS11_Bug.app/Frameworks/libXCTestSwiftSupport.dylib
Reason: image not found)
From what I have read, Xcode 14 is still supposed to have iOS 11 support, so it would appear something is broken.
I have filed FB11512459 for this issue.
Post
Replies
Boosts
Views
Activity
I’ve just run into an issue with a binary distributable XCFramework and stored properties with property wrappers.
We distribute a closed source iOS XCFramework written in Swift and have been chugging along just peachy. During the build we build both the simulator and device variants and use xcodebuild -create-xcframework to package it up all nice, including the .swiftinterface files.
Recently I came across a compatibility issue on our server side with how we were JSON encoding Int64s... The server is expecting a string and serving these values as strings (based on Protobuf). By default the JSON encoder/decoder deals with numbers. This exact scenario was discussed on the Swift Forums and the proposed solution was to use a property wrapper to handle that.
So I went down that route and all was good in the world locally. I went to cut a release and was surprised when my builds that consumed the framework via SPM began to fail.
Digging into it, I am getting the following error: Invalid redeclaration of synthesized property '_theValue'. Following that error through takes me to the .swiftinterface file were I ended up seeing something I was not expecting...
@frozen public struct TestStruct : Swift.Codable, Swift.Equatable {
@PropertyWrapperTinkerSDK.StringRepresentedFixedWidthInt public var theValue: Swift.Int64 {
get
}
private var _theValue: PropertyWrapperTinkerSDK.StringRepresentedFixedWidthInt<Swift.Int64>
public init(theValue: Swift.Int64)
public static func == (a: PropertyWrapperTinkerSDK.TestStruct, b: PropertyWrapperTinkerSDK.TestStruct) -> Swift.Bool
public func encode(to encoder: Swift.Encoder) throws
public init(from decoder: Swift.Decoder) throws
}
Specifically, the private var _* declaration for the backing value.
It would seem to me that this being a private implementation detail shouldn’t even be in the .swiftinterface file. Manually removing these private var _* entries allows the consuming applications to compile and... seem to work... But it seems a bit scary going in here and manually modifying this file.
I was wondering if anybody else has seen this and has a recommendation of how to proceed?
Note: This is cross posted on the Swift Forums as well as I am desperately trying to find a proper workaround/solution.