6

我正在尝试在我的框架中测试一个方法,并且我编写了一个简单的测试用例。但它无法执行,xcode 给了我错误:

ld: framework not found V***ments for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我仔细检查了框架是否已添加到嵌入式二进制文件以及构建阶段部分。

这是我的测试文件:

import XCTest

@testable import MYClass


class MYClassTests: XCTestCase {

    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }

    func testExample() {
        // This is an example of a functional test case.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

    func testPerformanceExample() {
        // This is an example of a performance test case.
        self.measureBlock {
            // Put the code you want to measure the time of here.
        }
    }

    func testInitalization() {

    // tests pass when I comment the following lines.
//        let one = MYClass.sharedInstance
//        XCTAssertNotNil(one, "Failed to create a MYClass instance")
    }
}

当我取消注释上述两行时,我得到了未找到框架的错误。

我也尝试了以下方法:

  • 该框架已添加到嵌入式二进制框架部分。
  • Embedded contains swift code设置为YES,因为框架包含 swift 代码。
  • 打包部分中的可执行前缀为空。(它没有设置为@executable_path/Frameworks)
  • 链接中的运行路径搜索路径设置为

    $(inherited) @executable_path/Frameworks @loader_path/Frameworks

  • 我也尝试清理项目并重新启动 xcode,并构建框架。

  • 删除了派生数据。

我不确定可能是什么问题。有任何想法吗?

4

2 回答 2

2

这可能是因为该框架不是为 iOS 模拟器或您的 Mac 编译的(可能您选择了一个 iOS 设备作为构建目标)。

如果您有权访问框架目标的项目文件,请转到该Build Settings部分并在Build Active Architecture Onlyselect下No

希望这可以帮助!

于 2019-01-02T21:38:31.207 回答
1

这意味着V***ments没有可以为iphone 5等i386手机编译的版本。

使用以下命令从终端编译对我很有用:

xcodebuild ARCHS = arm64 -scheme <YOUR SCHEME> -workspace <NAME OF WORKSPACE> .xcworkspace / -configuration Debug build
于 2019-03-01T15:11:16.840 回答