stephen
stephen

Reputation: 597

iOS 11 simulator dyld: Symbol not found: _CKAccountChangedNotification

Does anyone know what happened for my iOS 11 simulator? When i launch on iOS 11, the app can't work, and says in console:

dyld: Symbol not found: _CKAccountChangedNotification

Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet

Expected in: /Users/steve/Library/Developer/Xcode/DerivedData/Cloud-bvzzwfgkjzfnzibxrwadbayiowcu/Build/Products/Debug-iphonesimulator/CloudKit.framework/CloudKit in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet"

But everything is fine when run in iOS 10 simulator or on the device with iOS 11. How can i fix this problem? Thanks in advance!

Upvotes: 1

Views: 936

Answers (1)

russbishop
russbishop

Reputation: 17219

CloudKit is a system framework so your framework is interfering with other system frameworks trying to find the symbol in the real CloudKit.framework

This happens because the Simulator does not currently use a dyld shared cache (otherwise the symbols would already have been resolved to the system-provided CloudKit.framework) and Xcode sets up the DYLD_FRAMEWORK_PATH to point to the built products directory so it can find your frameworks even though they aren't packaged up in their final install location.

These two combined causes dyld to see your version of CloudKit.framework when it attempts to resolve _CKAccountChangedNotification.

The solution is to rename your framework.

Upvotes: 2

Related Questions