iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta
This crash has been a blocking issue, basically I used following steps to reproduce the issue:
The app immediate crashed upon launching, here is console log:
dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
Reason: image not found
I have tried to build on iOS 7.1 and 8.0 devices, they both have the same crash. However I can build app and run on simulator fine. Also I am aware that I can change the framework to from Required to Optional in Link Binary With Libraries, but it did not completely resolve the problem, the app crashed when I create an instance of Dog. The behavior is different on device and simulator, I suspect that we can't distribute framework for device using beta version of Xcode. Can anyone shed light on this?
In the target's General tab, there is an Embedded Binaries field. When you add the framework there the crash is resolved.
Reference is here on Apple Developer Forums.
For iOS greater than or equal to 8
Under the target's General tab, in the Embedded Binaries section add the framework. This will copy the framework into the compiled so that it can be linked to at runtime.
Why is this happening? : because the framework you are linking to is compiled as a dynamically linked framework and thus is linked to at runtime.
Note : Embedding custom frameworks is only supported in iOS > 8 and thus and alternative solution that works on older versions of iOS follows.
For iOS less than 8
If you have influence on this framework (have access to the source code / build process) you may change this framework to be statically linked rather than dynamically linked. This will cause the code to be include in your compiled app rather than linked to at runtime and thus the framework will not have to be embedded.
How : Under the framework's Build Setting tab, in the Linking section change the Mach-O Type to Static Library. You should now not need to include the framework under embedded binaries.
Including Assets : To include things such as images, audio, or xib/nib files I recommend creating a bundle (essentially a directory, more info here bit.ly/ios_bundle) and then load the assets from the bundle using NSBundle.
I received this same error while attempting to manually add my created framework into my project. Just dragging the framework into your project isn't going to be good enough. That is like being in the same ballpark but not being able to find your kids. It took me some trial and error to get it to work properly but following these steps did it for me.
1) Create your framework
COMMAND
+ B
build your framework and ensure you receive "Build Succeeded". 2) Access your framework
Products
folder in your project. .framework
and select "Show in Finder". 3) Place framework in your project
.framework
from your Finder window to your app project's "Framework" folder. 4) Configure app project for framework
+
button. In the drop down choose "New Copy Files Phase". Destination
to "Frameworks". Leave the subpath empty. Then click the +
button at the bottom left. 5) Clean, then run your project
COMMAND
+ SHIFT
+ K
COMMAND
+ R
上一篇: 位和64位