无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包
Posted
技术标签:
【中文标题】无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包【英文标题】:The bundle “MyProjectUITests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle 【发布时间】:2018-10-05 12:50:47 【问题描述】:我愿意为我的应用添加单元和 UI 测试。
我首先成功地配置了单元测试,我尝试对 UI 测试做同样的事情。这是我的 Podfile,在添加了一个新的 UI 测试包目标之后:
platform :ios, '8.0'
use_frameworks!
inhibit_all_warnings!
def shared_pods
pod 'Bolts'
pod 'Branch'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
pod 'GoogleAnalytics'
pod 'GooglePlaces'
pod 'Parse'
pod 'Toast-Swift'
end
target 'MyTarget' do
shared_pods
end
target 'MyTargetUITests' do
shared_pods
end
target 'MyTargetUnitTests' do
shared_pods
end
但是,当我尝试运行自动创建的MyProjectUITests
测试用例时,它只包含基本设置,甚至没有@testable import MyProject
:
import XCTest
class MyProjectUITests: XCTestCase
override func setUp()
continueAfterFailure = false
XCUIApplication().launch()
我收到此错误:
正在运行测试... 。
(dlopen_preflight(/var/containers/Bundle/Application/5A1FE39F-E675-4A47-9BF4-FBCDB96F5821/MyProjectUITests-Runner.app/PlugIns/MyProjectUITests.xctest/MyProjectUITests):库未加载:@rpath/libswiftSwiftOnoneSupport.dylib
引用自:/private/var/containers/Bundle/Application/5A1FE39F-E675-4A47-9BF4-FBCDB96F5821/MyProjectUITests-Runner.app/PlugIns/MyProjectUITests.xctest/Frameworks/Toast_Swift.framework/Toast_Swift
原因:图片未找到)
怎么了?感谢您的帮助。
编辑:作为参考,当我从我的 UI 测试目标中删除 Toast_swift
pod 并让它只在我的应用程序和单元测试目标中时,它工作正常。
【问题讨论】:
CMD + Shift + K 我已经尝试过了,但没有成功。 (请参阅我帖子中的编辑) 您使用的是 xCode 10 吗? @JonVogel 是的,10.0 版。 【参考方案1】:在 cocoapods github 问题跟踪器上查看 this issue。
我仍然有点困惑为什么这会成为一个问题,但使用此脚本将 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
设置为 YES
解决了我的问题。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
# This works around a unit test issue introduced in Xcode 10.
# We only apply it to the Debug configuration to avoid bloating the app size
if config.name == "Debug" && defined?(target.product_type) && target.product_type == "com.apple.product-type.framework"
config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = "YES"
end
end
end
end
【讨论】:
我也阅读了这个问题并尝试了这个,但我一直收到这个错误。它只发生在 UI 测试中,甚至不会发生在单元测试中。所以我最终将框架代码粘贴到我的 UI 测试目标中,但这真的不方便..【参考方案2】:尝试添加继承! :search_paths
并且还在 post_install 中更改 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
use_frameworks!
def shared_pods
pod 'SomePod'
end
target 'App_name' do
shared_pods
end
target 'App_nameTests' do
inherit! :search_paths
shared_pods
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'
end
end
end
【讨论】:
【参考方案3】:我也遇到过这个问题,其他建议都没有奏效。
一段时间后,我发现在代码中的任何位置专门使用 print()
会以某种方式强制加载 libswiftSwiftOnoneSupport.dylib,问题就会消失。
我使用的是 Xcode 10.1、Swift 4.2,而出现此问题的 pod 是 Nimble。
希望这会有所帮助!
【讨论】:
以上是关于无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包的主要内容,如果未能解决你的问题,请参考以下文章
捆绑包 UITests 无法加载,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包
运行路径搜索路径原因:无法加载捆绑包“MySecondFramework”,因为它已损坏或缺少必要的资源
错误:无法加载 AX 捆绑包:MapKitFramework.axbundle。帮助?