2016-03-01 80 views
2

我正在通过XCode 7.2.1构建一个命令行项目,该项目使用Cocoapods进行依赖。这取决于该框架在“DerivedData”文件夹中生成和主要项目的基础,但是当我来运行应用程序,我得到的错误:Cocoapods依赖和“库未加载...图像未找到”

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,以防万一表示什么?

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

+0

覆盖我不认为Cocoapods支持命令行目标。 [SwiftLint](https://github.com/realm/SwiftLint)通过构建OSX应用程序并从应用程序包中提取二进制文件来解决此问题。 –

回答

3

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

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

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

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

似乎是由issue #4963

0

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

看一看这个issue

而且这里的一些更info苹果。

+0

我没有在DerivedData或项目目录中看到任何.dyld,所以我不知道我将在哪里运行路径(rpath)指向?我在这一点上的目标仅仅是在完整的应用程序之前测试一部分API。 –

+0

对不起,我不知道这个问题,除了知道rpath是解决问题的方法之外,没有任何进一步的经验。 –

+1

看起来问题是由于“per-configuration构建产品路径”的默认设置为$ PODS_SHARED_BUILD_DIR/Alamofire,它在认为框架应该是冲突的。去除Alamofire它结束了在正确的位置建设。 –