100+ "класс, реализованный в предупреждениях MapKit и VectorKit" с Xcode 9.0.1 и выше

при запуске моего проекта (который даже не использует MapKit), моя консоль получает спам с более чем сотней повторяющихся предупреждений класс:

objc[6377]: класс ___MKPlaceBusinessInfoItemAccessibility_super реализован в обоих /приложениях/Xcode.app / содержание / разработчик / платформы / iPhoneOS.платформа/разработчик/библиотека/CoreSimulator/профили/сред/иос.simruntime / содержание / ресурсы / RuntimeRoot / система / библиотека / AccessibilityBundles / MapKit.axbundle/MapKit с (0x12f128f00) и /приложения/Xcode.app / содержание / разработчик / платформы / iPhoneOS.платформа/разработчик/библиотека/CoreSimulator/профили/сред/иос.simruntime/содержание/ресурсы/RuntimeRoot/система/библиотека/AccessibilityBundles / VectorKit.axbundle / VectorKit (0x12f2187b0). Один из двух будет использоваться. Какой из них не определен.

эти предупреждения были нет С Xcode 9.0.0, Я только испытываю это на Xcode версии 9.0.1 и выше.

Я знаю, что это ошибка и я нашел радар вот об этом вопросе. Есть ли способ отключить эти предупреждения, не влияя на видимость других предупреждений SDK?

8 ответов


Это на самом деле ошибка в текущей структуре iOS и не имеет ничего общего с чем-либо в вашем приложении, кэше модулей, библиотеках и т. д. Причина, по которой это кажется недетерминированным, заключается в том, что он существует только тогда, когда уровень доступности активен, чего нет на симуляторе, за исключением очень конкретных обстоятельств. Три, о которых я знаю:

  • инспектор доступности включен
  • UI Инструментальное тестирование
  • VoiceOver для OSX включен (другие ATs также)

чтобы заставить это уйти, вы должны:

  • Exit Accessibility Inspector (если он включен)
  • Открыть Симулятор
  • оборудование - > "стереть все содержимое и настройки"
  • повторно запустить приложение.
  • буквально никогда не запускайте этот симулятор с помощью инспектора доступности
  • буквально никогда не запускать тесты пользовательского интерфейса на этом симуляторе, которые также полагаются на уровень доступности для выполнения своей работы, хотя я не думайте, что это приведет к ошибке, пока вы не "сотрете все"...."опять же, он будет присутствовать только для этого тестового прогона.

каждый раз, когда вы делаете один из этих последних двух точек маркера, вам придется очистить данные снова...

основная проблема заключается в том, что MapKit и VectorKit оба ссылаются на основные пакеты доступности, но, по-видимому, не сделали этого динамически, поэтому эти пакеты включены в оба модуля. Такие предупреждения очень безопасно игнорируются, хотя очень многословно и неприятно.

к сожалению, для этого нет другого исправления... возможно, вы можете скачать старую версию симулятора, если вам не нужны функции iOS 11. Или просто не запускайте инструментальные тесты / инспектор доступности / VoiceOver / я надеюсь, что они исправят это скоро!


получил ту же проблему на 9.0.1.

  • вы должны выйти из Xcode и всех симуляторов.
  • Run rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache.
  • снова запустите Xcode.

эта проблема была решена для меня.


Мне плевать на доступность в симуляторе, поэтому я просто переименовал один из дубликатов файлов, чтобы он не был найден:

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_

lol


сброс симулятора iOS исправил это для меня. Симулятор - > оборудование - > стереть все содержимое и настройки...


точно такая же проблема, в моем случае, я пытался удалить все файлы в папке DerivedData, но все равно не работает.

и позже я обнаружил, что если я переключусь на другой тип симулятора, например, переключусь с "iPhone 8" на "iPhone 8 plus", предупреждение исчезнет.

Итак, просто удалите симулятор "iPhone 8" из списка симуляторов, а затем снова добавьте симулятор "iPhone 8", он работает.

Не уверен, что проблема повторится, так как это и в третий раз разбираюсь с этим.


как вы можете видеть, что-то не так с CoreSimulator of /Applications/Xcode.app. Разработчик Apple Xcode определил этот символ в обоих MapKit и VectorKit, что является принципиальной ошибкой.

вы не можете изменить Xcode, поэтому только сотрудники Apple могут его решить.

просто хватит тратить свое время, за исключением возврат к Xcode 9.0


решена!

-на тренажере --Аппаратура ---- Стереть все содержимое и настройки - Закрыть xcode и симуляторы - удалить содержимое ~ / библиотека / разработчик / Xcode / DerivedData / ModuleCache - Запустить xcode...


мой случай немного отличается: я встретил эту проблему при запуске XCUITest. После запуска процесса XCUITest, целевое приложение падает при запуске. Однако, после того, как я удалил все веб-прокси, эта проблема исправлена!