Cocoapods依赖和“库未加载...图像未找到”

时间:2016-03-01 20:26:23

标签: xcode swift cocoapods

我正在通过XCode 7.2.1构建一个命令行项目,该项目使用Cocoapods作为其依赖项。它依赖的框架是在'DerivedData'文件夹中生成的,并且主项目是构建的,但是当我来运行应用程序时,我得到错误:

dyld: Library not loaded: @rpath/Alamofire.framework/Versions/A/Alamofire
  Referenced from: /Users/myuser/Library/Developer/Xcode/DerivedData/myproject-aidrwlylcmipvrckcfcztpjjkxab/Build/Products/Debug/myproject
  Reason: image not found

框架版本/ A下的文件树:

_CodeSignature
   CodeDirectory
   CodeRequirements
   CodeResources
   CodeSignature
Frameworks
Headers
   Pods-avsubtitleswriter-umbrella.h
Modules
   module.modulemap
Pods_avsubtitleswriter
Resources
   Info.plist

尝试过Cocoapods 0.39.0和1.0.0beta,在XCode中我使用的是.xcworkspace。

看看Pods项目,在产品下我看到红色的Alamofire.framework和黑色的Pods_myproject.framework,如果有什么表明的话?

此外,我们是否需要签署我们依赖的库?

2 个答案:

答案 0 :(得分:3)

看起来这个问题是由于“每个配置构建产品路径”的默认设置是$PODS_SHARED_BUILD_DIR/Alamofire,这与项目认为框架应该在哪里相矛盾(框架指向另一条路径) 。将值更改为简单为$PODS_SHARED_BUILD_DIR解决了构建问题,因为这两个位置最终相同。

在此之前,除了pod install和工作区的构建之外,我没有做任何其他事情。

注意,一旦我解决了这个问题,我确实需要将以下路径添加到“运行时搜索路径”中:

/System/Library/CoreServices/MRT.app/Contents/Frameworks/

似乎由issue #4963

涵盖

答案 1 :(得分:0)

命令行应用程序与常规OSX .app或iOS应用程序的不同之处在于需要更明确地指定框架的链接。这是通过运行路径动态链接框架来完成的。

看看这个issue

此外还有来自Apple的更多info