ChatGPT解决这个技术问题 Extra ChatGPT

dyld: Library not loaded: @rpath/libswiftCore.dylib

I am trying to run a Swift app on my iPhone 4s. It works fine on the simulator, and my friend can successfully run it on his iPhone 4s. I have iOS 8 and the official release of Xcode 6.

I have tried

Restarting Xcode, iPhone, computer

Cleaning & rebuilding

Revoking and creating new certificate/provision profile

Runpath Search Paths is $(inherited) @executable_path/Frameworks

Embedded Content Contains Swift Code is 'Yes'

Code Signing Identity is developer

Below is the error in entirety

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
clean and rebuild worked for me
Solution is here. The same topic
Cleaning and rebuild my project that will work for me
1 I have been facing the same problem... It got fixed by adding: In you podfile: use_modular_headers! instead of use_frameworks! Good luck! I hope this works for you!

p
pkamb

For me none of the previous solutions worked. We discovered that there is an "Always Embed Swift Standard Libraries" flag in the Build Settings that needs to be set to YES. It was NO by default!

Build Settings > Always Embed Swift Standard Libraries

After setting this, clean the project before building again.

For keen readers some explanation The most important part is:

set the Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) build setting to YES in your app as shown in Figure 2. This build setting, which specifies whether a target's product has embedded content with Swift code, tells Xcode to embed Swift standard libraries in your app when set to YES.

https://i.stack.imgur.com/Q6cAf.png

The flag was formerly called Embedded Content Contains Swift Code


Worked for me too, so thanks a bunch. What puzzles me is, if I add swift code to a project, why doesn't Xcode updates this automatically? It sounds like a reasonable default behavior. I suppose this way it gives you more control over included libraries, etc.
For me was "Embed asset Packs in Product Bundle"!
Do a clean after you do this.
Doing a clean after doing this is what solved my problem. Glad I checked the comments! =]
It's called Always Embed Swift Standard Libraries now.
r
royherma

Surprisingly enough, all i did was "Clean" my project (shift+cmd+K) and it worked. Did seem to be related to the certificate though.


Clean makes sense, since it forces refreshing of cached items used in a build. I had to do this because I just refreshed a signing certificate. I did a clean and a Clean Build Folder (Option-clean).
ha yes,it worked. i had reset my certificates earlier and this clean worked like a charm.
GENIUS, hah this was prob caused by upgrading from swift 2 to 3 without cleaning in between i suspect, for me at least
Same problem here. New fresh build is required after manipulating certificates.
Same problem here . Clean is must step. no need to manipulate certificates. my problem solved.
j
jemmons

I started getting this error when I removed:

@executable_path/Frameworks

from Runpath Search Paths in my build settings. Replacing it fixed everything up again (thank goodness for source control!)

I don't know how it got there, but it appears to be needed for a binary to find its embedded Swift runtime.


Updated an old iOS6 project to iOS7 and Swift and got that error. @executable_path/Frameworks fixed it. Thanks!
For me, as of Xcode 8b5, it was actually @loader_path/../Frameworks for macOS unit tests and @loader_path/Frameworks for iOS unit tests that needed to be added.
Yes! This was the fix that did it for me in iOS 10/Xcode 8. The project began on iOS 2-3 as pure objective-c and we're just now adding some Swift.
Adding this fixed the error for me, as well. Anyone know the full reason for this? Thanks for the help.
Worked for me too! (XCode 8.2.1)
C
Cœur

https://i.stack.imgur.com/1OKJo.png


Any thoughts? @Mustafa
The answer is very vague.
Again, answer quite vague. Not entirely sure what that means in relation to the OP.
Worked for me. Adding only to the "Linked frameworks and libraries" section didn't do the trick.
To expound: If what you're seeing in the error message is the name of a framework (e.g., a custom Cocoa Touch Framework that you made), don't just add the .framework in the Target Dependencies in Build Phases. You also need to add it to Embedded Binaries in the General tab. This answer fixed it for me.
p
pkamb

In Xcode 8 the option for Embedded Content Contains Swift Code option is no longer available.

It has been renamed to "Always Embed Swift Standard Libraries = YES"

https://i.stack.imgur.com/KKhcS.png


This helped me with a crash on WatchOS
G
Gleb Barylski

Xcode 13 here (13.1 with react-native).

Created a clean react-native project and saw /usr/lib/swift as an entry in Runpath Search Paths.

https://i.stack.imgur.com/dsfY7.png

After adding that, my project finally ran without crashing!

Nothing helped from what was suggested before.


This saved my day! Non of above solution works for Xcode 13, thanks!
Wow. the only thing that worked. gg wp. Tho I wonder why it is even required. for me it happened with unity project export not implementing it for some reason...
Work like a charm for react-native 0.68.1!! Thank you
gg wp! indeed Nothing else worked except this.
This is the only solution that worked for me (Flutter, Xcode 13.2.1). Thank you!
V
Vijay Sundaram

I think it's a bug when certificates are generated directly from Xcode. To resolve (at least in Xcode 6.1 / 6A1052d):

go to the Apple Developer website where certificates are managed: https://developer.apple.com/account/ios/certificate/certificateList.action select your certificate(s) (which should show "Managed by Xcode" under "Status") and "Revoke" it follow instructions here to manually generate a new certificate: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32 go to Xcode > Preferences > Accounts > [your Apple ID] > double-click your team name > hit refresh button to update certificates and provisioning profiles


Worked for me only when deleting and creating only in XCode, developer.apple.com's "Certificates, Identifiers & Profiles" tool created new bad certs.
Forgive my ignorance... What does this Answer have to do with the Question that was asked? It looks like you answered a different question. Or more correctly, you responded to @user3056783 deleted answer which was just an "I'm having this problem too comment".
I had just generated a certificate in Xcode, so it may have been the same issue, though I was able to resolve it by just running a Clean.
That "refresh" button is now renamed to "Download All" ... :)
Same problem in XCode 7. Manually generate cert files at Apple developer center solved the problem for me.
D
DonnaLea

I was having this issue with running my Swift tests (but not my app). It turns out that the test needed to have more than @executable_path/Frameworks in it's Runpath Search Paths build setting for the test target. Setting the Runpath Search Paths to the following worked a charm for me:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks

Yep this is it! Faced this for AFDateHelper.framework, Result.framework for those that Google their way here. I realised this was the solution since doing this changed the name of the framework I was receiving this error for - that was a framework I'd missed out on including in carthage copy-frameworks since it was a secondary dependency (one that a framework I was using had added)
Hallelujah! God bless you DonnaLea. That's just ended a 3 hour struggle.
Brilliant. Just what I was looking for.
n
nalexn

OK, sharing here another cause of this error. It took me a few hours to sort this out.

In my case the trust policy of my certificate in Keychain Access was Always Trust, changing it back to defaults solved the problem.

In order to open the certificate settings window double click the certificate in the Keychain Access list of certificates.

https://i.stack.imgur.com/qOuLy.png


It worked for me as well. I was using pods to include PubNub and AWS sdks. I have tried using different methods like changing 'Runpath Search Paths' It was already set to value mentioned in above answer. Marked yes to Embed swift code in build settings but did not work. Finally this solution worked for me. Cheers.
Worked for me. I would never have suspected something like this. Thanks a lot.
I tried every solution above this and this was the nail in the coffin. I'm not sure if I needed a combination of all of them, but this was the winner for me. To be clear, the ones I did were: Cleaning the proj, include load_path in Runpath search paths, moved distribution cert from system to login keychain, set Always embed swift standard libraries to yes, "untrusted" the cert (set it back to system default trust).
Holy molly... Thanks a lot!
c
codeherk

This issue occurs again in Xcode 10.2. You must download and install the following package from Apple. It provides Swift 5 Runtime Support for Command Line Tools.

https://support.apple.com/kb/DL1998?locale=en_US


I was getting dyld: Symbol not found: _$s11SubSequenceSlTl. This works 👍
Great! Solved with this
Works! This reminds me of old time windows programming when you needed to install the redistributable visual c++ msvcrt.dll
Thanks! Tried everything else and this was it.
l
loretoparisi

You have to set the Runpath Search Paths to @executable_path/Frameworks as showed in the following screenshot of Build Settings:

https://i.stack.imgur.com/JMuyr.jpg

If you have any embedded frameworks made in Swift, than you can set to YES the Build Options Embedded Content Contains Swift Code.


YES, for framework in swift, setting "Embedded Content Contains Swift Code" to YES is necessary
I made a command line tool that uses some dylibs that are to be delivered along with the tool in a local directory (and not in /usr/lib or something like that). otool -L for these dylibs told me that they were already using @rpath/... for their own path. Now, by setting the Runpath Search Path to the path of that folder, I can run my tool and it'll find the dylibs that are stored in a folder next to it.
When trying to add a Swift module into a React Native project, it was instead failing to find @rpath/libswiftAppKit.dylib. An issue lead me to learn that I had to add the searchpath: @executable_path/../Frameworks/ based on these instructions. Whether this applies only to my project structure, I can't say. Of note, I did not have to clean DerivedData for this setting to take effect!
f
flatronka

I think Apple has already summarized it under Swift app crashes when trying to reference Swift library libswiftCore.dylib

Cited from Technical Q&A QA1886:

Swift app crashes when trying to reference Swift library libswiftCore.dylib. Q: What can I do about the libswiftCore.dylib loading error in my device's console that happens when I try to run my Swift language app? A: To correct this problem, you will need to sign your app using code signing certificates with the Subject Organizational Unit (OU) set to your Team ID. All Enterprise and standard iOS developer certificates that are created after iOS 8 was released have the new Team ID field in the proper place to allow Swift language apps to run. Usually this error appears in the device's console log with a message similar to one of the following:

[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

The new certificates are needed when building an archive and packaging your app. Even if you have one of the new certificates, just resigning an existing swift app archive won’t work. If it was built with a pre-iOS 8 certificate, you will need to build another archive. Important: Please use caution if you need to revoke and setup up a new Enterprise Distribution certificate. If you are an in-house Enterprise developer you will need to be careful that you do not revoke a distribution certificate that was used to sign an app any one of your Enterprise employees is still using as any apps that were signed with that enterprise distribution certificate will stop working immediately. The above only applies to Enterprise Distribution certificates. Development certs are safe to revoke for enterprise/standard iOS developers.

As the AirSign guys state the problem roots from the missing OU attribute in the subject field of the In-House certificate.

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

I have an enterprise development certificate, creating a new one solved the issue.


After spending many many hours trying to understand why my new CI setup was not able to properly publish a beta app (enterprise account, indeed), I figured out that in the export options, compileBitcode MUST be true.
S
Sazzad Hissain Khan

Let's project P is importing custom library L, then you must add L into

P -> Build Phases -> Embed Frameworks -> +. That works for me.

https://i.stack.imgur.com/uJCaE.png


M
Michael Yang

The most easy and easy to ignored way : clean and rebuild.

This solved the issue after tried the answers above and did not worked.


C
Community

I was having the same problem after moving to a new mac, and after hours, trying all the suggested answers in the questions, none of this worked for me.

The solution for me was installing this missing certificate. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Found the answer here. https://stackoverflow.com/a/14495100/976628


P
Paul Popiel

This error message can also be caused when upgrading Xcode (and subsequently to a new version of Swift) and your project uses a framework built/compiled with an older/previous version of Swift.

In this case rebuilding the framework and re-adding it will fix the problem.


This happened to me, going from Xcode 9.2 to 9.3. Though I didn’t discover it until long after the upgrade, because as long as the project has been built using Xcode 9.2 previously, it continues to work indefinitely with Xcode 9.3. Only after doing a clean checkout did I discover this.
I don't think this answer is rated high enough. Using Carthage and an updated version of Xcode gets installed, you need to rebuild your Carthage libraries to make this issue go away.
B
Bartłomiej Semańczyk

Change Copy Pods Resources for the target from:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

to:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"

Unless this has broken something else, this has been the fix for me!
What else that thing has broken? Can you help me improve the answer?
It seems to work with the exception being running 'pod install' overwrites the change.
@RealCasually you are right Is there a way to prevent from overwriting this or any workaround?
OMG. this was the problem for me after trying 100 other things and 4 hours of monkeying. What exactly happens in the framework.sh vs resources.sh?
S
Stu P.

I solved by deleting the derived data and this time it worked correctly. Tried with Xcode 7.3.1GM


Deleting my derived data also worked, I did a clean (CMD+K) beforehand anyways just in case and the error died a painful death!
D
Daniel

After having tried out everything, I finally found out, that the build seems not always include every detail again and again. Maybe for speeding up the process... In order to ensure WHOLE packaging before running on a device, make a Clean first: Shift-Cmd-K. Then build with: Cmd-B. After that run it on your device. Easy. Kind regards to all you nice guys in that place!


P
Patrice From 8Beats

In my case, it was just the name of my target :

I renamed it like this : MyApp.something and the same issue appeared. But I saw in the build Settings window, my product module name has been changed like this MyApp-something. So, I removed the dot in my target name (MyAppSomething) and the issue was gone.


a
abinop

For me, having tried everything with no success, what worked was to remove @executable_path/Frameworks from the Packaging section (don't know how it came to be in there in the first place)

https://i.stack.imgur.com/dqPWZ.png


is this for the framework path or for the main project settings path ?
I had one project static lib a and wanted to add swift fw into it. This instruction together with Embedded Contain Contains Swift to Yes code resolved all problems.
This seems to have broken my project.
G
Guy

We had a unity project that creates an xcode project that includes libraries that use swift.

We tried each and every reasonable suggestion on this thread.

Nothing worked. Code runs fine on new devices, and crashes on iOS<=12

It seems that swift is so smart, that even if you set it to "ALWAYS_EMBED_SWIFT_LIBRAIES"="YES" it does not include the swift libraries.

What actually solved the problem for us is to include a dummy swift file in the project. The file must contain calls to dispatch, foundation libraries.

Apparently this hints mighty-xcode to force include the libraries, but this time for real.

Here is the dummy file we added that made it work:

import Dispatch
import Foundation


class ForceSwiftInclusion {

   init() {

    // Force dispatch library.
    DispatchQueue.main.async {
      print("something")
    }

    // Force foundation library.
    let uuid = UUID().uuidString
    print("\(uuid)")

   }
}

For unity, also add project.AddBuildProperty(target, "SWIFT_VERSION", "Swift 5"); to your post processing for creating the xcode project.


n
newDeveloper

None of the solutions worked for me. Restarting the phone fixed it. Strange but it worked.


C
Community

none of these solutions seemed to work but when I changed the permission of the world Wide Developer cert to Use System defaults then it worked. I have included the steps and screenshots in the link below

I would encourage you to log the ticket in apple bug report as mentioned here as Apple really should solve this massive error: https://stackoverflow.com/a/41401354/559760


M
Michael

What worked for me in Xcode 11 was going to General -> Frameworks, Libraries, and Embedded Content and changing the "Embed" option for the framework in question to "Embed & Sign"

https://i.stack.imgur.com/R5Ec6.png


Thank you...you saved me today..
H
HG123

Xcode 7.2, iOS 9.2 on one device, 9.0 on other. Both had the error. No idea what changed that caused it, but the solutions above for the WWDR were correct for me. Install that cert and problem solved.

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846


While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
Apologies. Download the WWDR certificate and then open it to install into your keychain. Certificate is here: developer.apple.com/certificationauthority/AppleWWDRCA.cer
V
VDPATEL

There are lot's of answers there but might be my answer will help some one.

I am having same issue, My app works fine on Simulator but on Device got crashed as I Lunches app and gives error as above. I have tried all answers and solutions . In My Case , My Project I am having multiple targets .I have created duplicate target B from target A. Target B works fine while target A got crashed. I am using different Image assets for each target. After searching and doing google I have found something which might help to someone.

App stop crashing when I change name of Launch images assets for both apps . e.g Target A Launch Image asset name LaunchImage A . Target B Lunch Image asset name LaunchImage B and assigned properly in General Tab of each target . My Apps works fine.


m
millionyearsold

For me building a MacOS command line Swift app that depended on 3rd party Swift libs (e.g. SQLite) none of the above solutions seemed to work. What did work was directly adding the following path to my Runpath Search Paths in the Build Settings:

/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/

Doing that did give a warning at runtime saying that Xcode had found 2 versions of libswiftCore - which makes sense. Except that not including that line resulted in Xcode not finding any versions of libswiftCore.

Anyway, that'll do for me even if it doesn't seem right - my app is just a utility that I'm not intending to distribute and at least it runs now!


Thank you! I'm in your situation and this worked for me as well.
Yes, this is the solution for CLI!
n
neoneye

I have multiple version of Xcode installed at the same time. The framework was built with a newer version of Xcode. The app that I tried to compile was with an older version of Xcode. When I cleaned and compiled both the framework and the app with the same version of Xcode then things worked.


I
Iulian Onofrei

I started getting this similar error for testing adding S3 file using AWS services. Below was the error. dyld: Library not loaded: @rpath/AWSAutoScaling.framework/AWSAutoScaling

I searched a lot and above solutions are also not helpful for me. Below link helped me to solve this issue.

https://forums.developer.apple.com/thread/21292

Which says to fix this issue by re-downloading the WWDR (Apple Worldwide Developer Relations Certification Authority).