dyld: Symbol not found: swift34swift50override_conformsToProtocol

I am getting following error from one of the pod frameworks while running the app (Build is a success).

dyld: Symbol not found: __ZN5swift34swift50override_conformsToProtocolEPKNS_14TargetMetadataINS_9InProcessEEEPKNS_24TargetProtocolDescriptorIS1_EEPFPKNS_18TargetWitnessTableIS1_EES4_S8_E.

Referenced from: X framework

Expected in: frameworks/DeviceKit.framework/DeviceKit

mac OS 10.15

Xcode 12.4

React native 0.63

cocoapods: 1.10.1

  • I have the same problem !!!!

Add a Comment

Replies

look, i found this:

When the *** not found symbol appears, the following situations will generally occur

  1. You added library ***, but the supported CPU structure is not consistent with the mobile phone you are running. Right now, use lipo-info to see the supported CPU structure per library.
  2. The *** version used does not match what you need. The above is the solution.
  • I'm getting this exact issue using Xcode 12.5.1, works with Xcode 12.4. Any clue what has changed?

  • Resolved the problem after moving my Podfile back to an earlier version of AWS Amplify. For Xcode 12.5.1, it seems anything after AWS 1.12.0 gave the above error.

Add a Comment

I had the same error message, I recompiled the dependency in question to a XCFramework and it fixed the issue.

This issue happens for chained dependencies. Suppose you have App -> A.framework -> B.framework. If you change B's target OS version and rebuilt B, this error occures.

The solution is to rebuilt A as well.

Of course, if you don't have the source code of A, you will have to revert to the old version of B

from iOS developer @ authing

In my case, in Podfile I have code that replaces IPHONEOS_DEPLOYMENT_TARGET for all pod targets with 'some' min version. Originally I had a '13.0' version. When I changed '13.0' to '9.0', did pod update, clean the project, and build & run again, the error didn't appear again.

Below is a piece of that code I have now:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']) < Gem::Version.new('9.0')
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
      end
    end
  end
end

Hope my answer will help somebody and save time.