Xcode 9.0.1 及更高版本的 100+ "Class implemented in both MapKit and VectorKit" 个警告

100+ "Class implemented in both MapKit and VectorKit" warnings with Xcode 9.0.1 and above

虽然 运行 我的项目(甚至不使用 MapKit),但我的控制台收到一百多个 class 重复警告的垃圾邮件:

objc[6377]: Class ___MKPlaceBusinessInfoItemAccessibility_super is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/MapKit.axbundle/MapKit (0x12f128f00) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/VectorKit.axbundle/VectorKit (0x12f2187b0). One of the two will be used. Which one is undefined.

这些警告 不存在 Xcode 9.0.0,我只在 Xcode 9.0.1及以上.

我知道这是一个错误I found a radar 是关于这个问题的。有没有办法在不影响其他 SDK 警告可见性的情况下使这些警告静音?

在 9.0.1 上遇到了同样的问题。

  • 您应该退出 Xcode 和所有模拟器。
  • 运行rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
  • 再次开始Xcode。

这个问题帮我解决了。

已解决!

-在模拟器上 - 硬件 ----清除所有内容和设置 -关闭xcode和模拟器 -删除 ~/Library/Developer/Xcode/DerivedData/ModuleCache 的内容 -开始xcode...

重置 iOS 模拟器为我解决了这个问题。 模拟器 -> 硬件 -> 清除所有内容和设置...

完全一样的问题,在我的例子中,我试图删除DerivedData文件夹中的所有文件,但仍然没有用。

后来我发现如果我切换到另一种模拟器,比如从'iPhone 8'切换到'iPhone 8 plus',警告就会消失。

因此,只需从模拟器列表中删除 'iPhone 8' 模拟器,然后再次添加 'iPhone 8' 模拟器即可。

不知道会不会再次出现这个问题,因为这也是我第三次遇到这个问题

这实际上是当前 iOS 框架中的一个错误,与您的应用程序、模块缓存、库等中的任何内容都无关。这似乎是不确定的原因是它只是当辅助功能层处于活动状态时,它不在模拟器上,除非在非常特殊的情况下。我知道的三个:

  • 辅助功能检查器已开启
  • UI 仪器化测试
  • OSX 的 VoiceOver 已开启(其他 AT 也一样)

要消除此问题,您应该:

  • 退出辅助功能检查器(如果打开)
  • 打开模拟器
  • 硬件 -> "Erase All Content and Settings"
  • 回复运行申请。
  • 从不运行这个带有辅助功能检查器的模拟器
  • 从不运行 UI 在这个模拟器上测试,它也依赖于辅助层来完成他们的工作,但我不认为这样做会导致错误一直存在直到你再次"Erase all....",它只会出现在那个测试运行。

每次执行最后两个要点之一时,您都必须再次清除数据...

核心问题是 MapKit 和 VectorKit 都 link 到核心可访问性包,但显然没有动态地这样做,所以这些包都包含在两个模块中。尽管非常冗长且令人沮丧,但可以非常安全地忽略此类警告。

不幸的是,没有其他修复方法...如果您不需要 iOS 11 个功能,也许您可​​以下载旧版本的模拟器。或者只是不 运行 检测 tests/Accessibility Inspector/VoiceOver/I 希望他们尽快解决这个问题!

如您所见,/Applications/Xcode.appCoreSimulator 有问题。 Apple Xcode 开发者在 MapKitVectorKit 中都定义了这个符号,这是根本错误。

无法修改Xcode,只有Apple的Staff才能解决。

只是停止浪费你的时间,除了回到Xcode 9.0

我根本不在乎模拟器的可访问性,所以我只是重命名了其中一个重复文件,这样它就不会被发现了:

mv /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/MapKit.axbundle/MapKit /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/AccessibilityBundles/MapKit.axbundle/MapKit_

哈哈

我的情况有点不同:我在 运行 XCUITest 时遇到了这个问题。 启动 XCUITest 进程后,目标应用程序在启动时崩溃。 但是,在我删除了所有的网络代理之后,这个问题就解决了!