【问题标题】:Cocoapods testing linker errorCocoapods 测试链接器错误
【发布时间】:2016-09-20 22:05:46
【问题描述】:

每当我构建我的测试目标(Xcode 生成的标准目标)时,构建都会失败并出现一个神秘的错误:

framework not found Pods_AppName_AppNameTests

我认为这意味着无法找到为我的测试生成的 pod 目标。 我的 podfile 很简单:

use_frameworks!

target 'AppName' do

  pod 'ReactiveCocoa'
  pod 'RealmSwift'
  pod 'ObjectMapper'
  pod 'Moya'
  pod 'Moya/ReactiveCocoa'
  pod 'pop'
  pod 'Heimdallr'
  pod 'Heimdallr/ReactiveCocoa'
  pod 'Alamofire'
  pod 'AlamofireImage'
  pod 'SwiftDate'
  pod 'DropdownAlert'
  pod 'NibDesignable'


  target 'AppNameTests' do
    pod 'Quick'
    pod 'Nimble'
  end
end

我正在使用 Cocoapods 1.0.1。

编辑:

这不是我的 podfile 的格式。这是运行 pod init 给我的默认设置。 cocoapods 中很可能存在错误,但格式是正确的。

编辑 2:

如果我包括:

inherit! search_paths

在我的测试目标中,测试失败说:

The bundle “MyApp_Tests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.

如果没有该行,测试也将无法构建,但这次会出现链接器错误:

Ld /Users/travis/Library/Developer/Xcode/DerivedData/Reactify-fqgxzcgedmqljrangqdkxpwdfxne/Build/Intermediates/Reactify.build/Debug-iphonesimulator/Reactify_Tests.build/Objects-normal/i386/Reactify_Tests normal i386

该特定错误来自 Travis,但我在本地 Xcode 中得到了相同的错误。

【问题讨论】:

  • 我试过这个(使用你的 pod 文件),一切正常!请提供一个可重现的例子
  • 您是否尝试过从派生数据目录中删除所有已安装的框架?
  • 一百万+一次。我什么都试过了;清理,擦拭,重新启动,安装,你的名字。如果您看到我的答案,我会给出一些解释,说明我最终如何让它工作,尽管没有明确的答案。

标签: ios cocoapods


【解决方案1】:

上周我也一直在与这个问题作斗争——我最终发现可靠工作的“解决方案”是从测试目标中添加inherit! search_paths,pod install,然后将其删除,然后再次 pod install ,像这样:

source 'https://github.com/CocoaPods/Specs.git'

project 'CityWeather/CityWeather.xcodeproj'
install! 'cocoapods',
         :deterministic_uuids => false

use_frameworks!

platform :ios, '9.3'

abstract_target 'CityWeather_Base' do

  <... pod list here, contents don't seem to matter ...>

  target 'CityWeather' do
  end

  target 'CityWeatherTests' do
  # NB. If it starts refusing to link the test frameworks,
  # adding and then removing inherit! :search_paths here appears to help.
  #inherit! :search_paths
  end

end

这至少比每次发生在你身上时都创建一个新目标要容易得多,根据我上周的判断,我预计这很快就会发生在你身上。很烦人。我花了尽可能多的时间来尝试从提交日志中推断出问题所在,但这并不是很明显。如果我设法找到足够的时间来解决问题以打开一个有用的问题,我会在这里更新。但与此同时,希望我的“解决方案”能在一定程度上提高您的工作效率。

【讨论】:

    【解决方案2】:

    这是最奇怪的事情,我之前绝对尝试过,但我只是删除了测试目标,创建了一个新目标,你瞧,它工作正常。据我所知,这两个目标之间的唯一区别是一个称为MyApp_Tests,另一个称为MyApp_ExampleTests。如果这是原因,我会感到惊讶,但目前很难说。

    我会说,尽管作为旁注,我所指的项目并不是我见过的唯一一个发生这种情况的项目。我的最后四个项目都遇到了这个错误,都是从 Cocoapods 1.0.0 开始创建的。这让我相信 Cocoapods 测试设置中存在一些隐藏的错误,我必须进行更多调查。

    此外,删除测试目标并创建一个新目标似乎只在这种特殊情况下有效。在其他项目中,错误仍然存​​在。而且我可以说这不仅仅是我的本地设置,因为我的 travis 构建也会持续失败。

    【讨论】:

    • 我认为它与 CocoaPods 1.0.0 有关。我最近升级并在几天前遇到了类似的错误。我最终从派生数据目录中删除了所有 pod 并重新安装以修复它。
    • 我实际上做得很好,但这似乎只是一个临时修复。我让我的测试在本地运行,但是一旦 travis 运行测试,它就失败了,并出现了几乎相同的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2013-09-29
    • 2015-02-25
    • 1970-01-01
    • 2015-12-13
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多