椰子足类依赖性和"Library not loaded ... image not found"



我正在通过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 是黑色的,万一这说明什么?

此外,我们是否需要对我们依赖的库进行签名?

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

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

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

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

似乎被问题 #4963 所涵盖

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

看看这个问题

另外,这是来自Apple的更多信息。

相关内容

最新更新