捆绑包 UITests 无法加载,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

Posted

技术标签:

【中文标题】捆绑包 UITests 无法加载,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包【英文标题】:The bundle UITests couldn’t be loadedbecause it is damaged or missing necessary resources. Try reinstalling the bundle 【发布时间】:2019-01-25 12:41:34 【问题描述】:

我的豆荚在这里

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'myAPP' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for myAPP
  pod 'SwiftMessages'
  pod 'IQKeyboardManager'
  pod 'SwiftKeychainWrapper'
  pod 'Tabman'
  pod 'PagingMenuController'
  pod 'Kingfisher'
  pod 'Optik'
  pod 'KRPullLoader'
  pod 'AlamofireImage'
  pod 'Firebase/Core'
  pod 'Firebase/Database'
  pod 'Firebase/Messaging'
  pod 'Firebase/Auth'
  pod 'Firebase/Storage'
  pod 'TCPickerView'
  pod 'GoogleMaps'
  pod 'GooglePlaces'
  pod 'Whisper'
  pod 'Fabric'
  pod 'Crashlytics'
  pod 'SwiftyJSON'
  pod 'Alamofire'
  pod 'SwiftGridView'
  target 'myAPPUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

我正在使用 swift 4,Xcode 10.1

    无法加载捆绑包“myAPPUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包。 myAPPUITests-Runner[3649:845498] 库未加载:@rpath/Alamofire.framework/Alamofire 引用自:/var/containers/Bundle/Application/9948D3F3-0BC3-4E51-8611-934A8872BC25/myAPPUITests- Runner.app/PlugIns/myAPPUITests.xctest/myAPPUITests 原因:图片未找到)

我尝试了不同的解决方案,但没有一个适合我。

这是我的 pod 版本

【问题讨论】:

请将已安装库的列表添加为文本,而不是图像。 【参考方案1】:

无法加载捆绑包 UITest,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

验证您的所有目标是否都使用相同的 iOS 版本: 构建设置 -> iOS 部署目标

【讨论】:

这对我来说是个问题。我建议在弄乱你的 podfile 之前先检查一下,否则你可能只是告诉你的 podfile 撤消不正确的设置,你可以在没有 podfile 的情况下修复。【参考方案2】:

为了安装所有依赖项,我将这些行添加到您的 Podfile 中:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if ['PagingMenuController', 'TCPickerView'].include? target.name
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '3.0'
      end
    end
  end
end

然后我从您的 Podfile 中删除了 use_frameworks!(有关详细信息,请参阅 this link),运行 pod update,之后我就能够运行测试了。

更多详情请见this answer。

【讨论】:

感谢您的回答帮助我解决问题。【参考方案3】:

如果您正在使用 swift 3 或 swift 4 并希望将 UITest 添加到您的项目中,请不要忘记以下步骤:

    从您的 pod 文件中删除 use_frameworks! 并使用以下 pod 版本的依赖项更新您的 pod 文件 使用post_install 指定您的swift version。 在两个目标应用程序(myAPP 和 myAPUITests)中删除 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 或将它们设置为 No 然后运行以下命令:

    pod deintegrate , pod clean & pod install

    # 取消注释下一行,为您的项目定义一个全球平台 平台:ios,'9.0'

    目标 'myAPP' 做 # 如果你没有使用 Swift 并且不想使用动态框架,请在下一行注释

          # Pods for myAPP
            pod 'SwiftMessages', '4.1.4'
            pod 'IQKeyboardManager', '6.1.1'
            pod 'SwiftKeychainWrapper', '3.0.1'
            pod 'Tabman', '1.9.1'
            pod 'PagingMenuController', '2.2.0'
            pod 'Kingfisher', '4.8.0'
            pod 'Optik', '0.3.0'
            pod 'KRPullLoader', '1.1.3'
            pod 'AlamofireImage', '3.3.1'
            pod 'Firebase/Core'
            pod 'Firebase/Database'
            pod 'Firebase/Messaging'
            pod 'Firebase/Auth'
            pod 'Firebase/Storage'
            pod 'TCPickerView', '0.2.5'
            pod 'GoogleMaps', '2.7.0'
            pod 'GooglePlaces', '2.7.0'
            pod 'Whisper', '6.0.2'
            pod 'Fabric', '1.7.9'
            pod 'Crashlytics', '3.10.5'
            pod 'SwiftyJSON', '4.1.0'
            #pod 'Alamofire', '4.7.3'
          pod 'SwiftGridView', '0.6.5'
          target 'myAPPUITests' do
            inherit! :search_paths
            # Pods for testing
          end
        end
    

在您的 pod 文件末尾添加以下内容

post_install do |installer|
    print "Setting the default SWIFT_VERSION to 4.0\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.0'
    end

installer.pods_project.targets.each do |target|
    if [].include? "#target"
        print "Setting #target's SWIFT_VERSION to 4.2\n"
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '4.2'
        end
    else
        print "Setting #target's SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n"
        target.build_configurations.each do |config|
            config.build_settings.delete('SWIFT_VERSION')
            #config.build_settings['SWIFT_VERSION'] = '4.0'
        end
    end
end
end

【讨论】:

【参考方案4】:

检查测试目标并检查 iOS 部署目标。

选择 APPUITests -> 构建设置 -> 部署 -> iOS 部署目标

就我而言,我在 iPhone SE(iOS 11.1) 中运行,我的测试目标 iOS 部署目标是 13.1。我将 iOS 部署目标更改为 11.0,对我来说工作正常。

【讨论】:

【参考方案5】:

我的问题已解决,将缺少的 pod 添加到测试目标。

看起来类似于下面的代码:

target 'myAPP' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for myAPP
  pod 'SwiftMessages'
  pod 'IQKeyboardManager'

  target 'myAPPUITests' do
    inherit! :search_paths
    # Pods for testing
      pod 'SwiftMessages'
      pod 'IQKeyboardManager'

  end

end

【讨论】:

以上是关于捆绑包 UITests 无法加载,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包的主要内容,如果未能解决你的问题,请参考以下文章

无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

运行路径搜索路径原因:无法加载捆绑包“MySecondFramework”,因为它已损坏或缺少必要的资源

构建 Swift 框架测试失败

Xcode 10 UI 测试原因:Cocoapods 未找到图像

如何强制卸载损坏的 Wix 捆绑包

更改捆绑 ID iOS