dyld: Library not loaded with cocoapods 0.37 and Xcode 6.3

ε祈祈猫儿з 提交于 2020-02-12 07:52:29

问题


I've been reading all the issues about the error:

dyld: Library not loaded: @rpath/Bolts.framework/Bolts Referenced from: /private/var/mobile/Containers/Bundle/Application/1542F906-CCE1-4181-AC7C-B5E3EE50E7D7/eBikeMotion.app/eBikeMotion Reason: no suitable image found. Did find:

Which makes my application unable to run in a real device (but it runs without any problem in the simulator. Until certain point I thought that it was an issue with the frameworks I was installing, but after installing manually the original one that was throwing the error, Alamofire, and the next Framework throwing the error was the next one in alphabetical order (Bolts, as you can see in the code snippet) So I've reached the conclusion that is indeed CocoaPods which is producing these errors. I've got the last version (0.37) with a clean install, Iv'e tried to create a new project, I've tried all the proposed solutions to this issue without any luck, so I have to open an issue, with the hope that someone can help me.

Regards.


回答1:


After reinstalling the whole system and don't finding a solution, I've found that some of the Build Phases mandatory for CocoaPods to run properly were missing.

The solution for this problem goes for the next steps:

  1. Deintegrate the cocoapods project (you can install the tool with sudo gem install cocoapods-deintegrate).

cocoapods-deintegrate on Github

  1. Modify your Podfile:

    You should define your target linking with link_with 'ProjectName'.

    You should define the target for your pods: target 'ProjectName' do [pods here] end.

  2. Make an install with pod install

  3. After doing this, go to XCode and check the following settings:

    Into project settings, under "Configurations" check that in Debug and Release you've got a Configuration set named Pods-ProjectName.[debug|release]

    Into your target, under "Build Phases" you should have three new phases that should be named: Check Pods Manifest, Embed Pods Frameworks and Copy Pods Resources.

  4. Make a clean, then build, then run into your device.

That's it.




回答2:


In my case, I followed the above answer by @Jorge, but it didn't resolve the problem. The exact error was a bit different because the missing file was @rpath Pods.framework/Pods. I finally resolved it with help from CocoaPods issue #3586:

Go to target > General > Linked Frameworks and Libraries section set both Pods.framework and Pods_target.framework to Optional.

Still trying to figure out exactly why.... this answer has some info: what-does-it-mean-to-weak-link-a-framework




回答3:


I had to fix two issues:

  1. Go to each target then Build Phases then Link Binary With Libraries and select Pods.framework. Set it to Optional.

  2. Cocoapods did not create the needed run scripts for my second target. My first target had all scripts. The second not. So I copied all missing run scripts from the first to the second target. You need to tap on the small "+" sign on the top left, add a run script and paste the script from the other target. I've done that for Check Pods Manifest.lock, Copy Pods Resources and Embed Pods Frameworks.

Then it did run on the device. Finally.




回答4:


Had same issue adding pods to WatchKit Extension. Linking main target with Watch app is not the best option at all. Found out that cocoapod 0.37.2 hasn't added 'Embed Pods Frameworks' script into build phase.

Script: "${SRCROOT}/Pods/Target Support Files/Pods-ExtensionName/Pods-ExtensionName-frameworks.sh"




回答5:


In order to have cocoapods generate the build phases Check Pods Manifest, Embed Pods Frameworks and Copy Pods Resources:

1 - Go to build phases and remove any custom modifications. I had to remove everything under the Link Binary With Libraries phase.

2 - Do a pod deintegrate (Or just remove the files yourself)

3 - Run a new pod install

This worked for me. Without the first step, it never did.




回答6:


To Resolve this you need to change status in Link Binary with Libraries in build phase for pod_projectName.framework and Bolt.framework

I got the same error in my project.

get error in CommonCrypto.framework

Resolved error by changing Required to Optional




回答7:


The easiest thing to do would be to ensure that your Protobuf.framework is a dependency in your target's scheme inside the Build step.

This tells Xcode to compile the Protobuf.framework created by your pod install/update whenever it builds your target.



来源:https://stackoverflow.com/questions/30053144/dyld-library-not-loaded-with-cocoapods-0-37-and-xcode-6-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!