Более 100 предупреждений "Класс реализован в MapKit и VectorKit" с Xcode 9.0.1 и выше
Во время работы моего проекта (который даже не использует MapKit
), моя консоль получает спам более чем с сотней предупреждений-дубликатов классов:
objc [6377]: класс ___MKPlaceBusinessInfoItemAccessibility_super реализован в обоих /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simrunources/otSunRtimetime_Contents Library/AccessibilityBundles/MapKit.axbundle/MapKit (0x12f128f00) и /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simrunources/otunRestime/otunRestime Система / Библиотека /AccessibilityBundles/VectorKit.axbundle/VectorKit (0x12f2187b0). Один из двух будет использован. Какой из них не определен.
Эти предупреждения не присутствовали с Xcode 9.0.0, я испытываю это только на Xcode 9.0.1 и выше.
Я знаю, что это ошибка, и я нашел радар, который об этой проблеме. Есть ли способ заставить эти предупреждения замолчать, не влияя на видимость других предупреждений SDK?
8 ответов
Это на самом деле ошибка в текущей iOS Framework, и она не имеет ничего общего с вашим приложением, кешем модулей, библиотеками и т. Д. Причина, по которой это кажется недетерминированной, заключается в том, что она существует только тогда, когда активен уровень доступности, который это не на симуляторе, кроме как при очень определенных обстоятельствах. Три, о которых я знаю:
- Инспектор доступности включен
- Инструментальное тестирование пользовательского интерфейса
- VoiceOver для OSX включен (и другие AT)
Чтобы это исчезло, вы должны:
- Выход из инспектора доступности (если он включен)
- Открытый симулятор
- Оборудование -> "Стереть все содержимое и настройки"
- Перезапустите приложение.
- Буквально НИКОГДА не запускайте этот симулятор с инспектором доступности
- Буквально НИКОГДА не запускайте тесты пользовательского интерфейса на этом симуляторе, который также полагается на уровень доступности, чтобы выполнить свою работу, хотя я не думаю, что это приведет к тому, что ошибка останется до тех пор, пока вы снова не "удалите все....", это будет просто присутствовать на этом тесте.
Каждый раз, когда вы делаете один из последних двух пунктов, вам придется снова очищать данные...
Основная проблема заключается в том, что MapKit и VectorKit оба связаны с основными пакетами доступности, но, очевидно, не сделали этого динамически, поэтому эти пакеты включены в оба модуля. Такие предупреждения очень безопасно игнорируются, хотя и очень многословны и разочаровывают.
К сожалению, нет другого решения для этого... возможно, вы могли бы загрузить старую версию симулятора, если вам не нужны функции iOS 11. Или просто не запускайте инструментальные тесты / Инспектора специальных возможностей /VoiceOver/ Я НАДЕЮСЬ, ЧТОБЫ ИСПРАВИТЬ ЭТО СКОРО!
Получил ту же проблему на 9.0.1.
- Вы должны выйти из Xcode и всех симуляторов.
- Бежать
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_
лол
Сброс симулятора iOS исправил это для меня. Симулятор -> Оборудование -> Удалить все содержимое и настройки...
Точно такая же проблема, в моем случае, я пытался удалить все файлы в папке DerivedData, но все равно не работает.
А позже я обнаружил, что если я переключусь на другой вид симулятора, например, с "iPhone 8" на "iPhone 8 plus", предупреждение исчезнет.
Итак, просто удалите симулятор "iPhone 8" из списка симуляторов, а затем снова добавьте симулятор "iPhone 8", он работает.
Не уверен, что проблема придет снова, так как я тоже в третий раз сталкиваюсь с этим.
Как видите, что-то не так с CoreSimulator
из /Applications/Xcode.app
, Разработчик Apple Xcode определил этот символ в обоих MapKit
а также VectorKit
, что является фундаментальной ошибкой.
Вы не можете изменить Xcode, так что только сотрудники Apple могут решить эту проблему.
Просто перестаньте тратить свое время, кроме возврата к Xcode 9.0
Мой случай немного отличается: я столкнулся с этой проблемой при запуске XCUITest. После запуска процесса XCUITest целевое приложение вылетает при запуске. Однако после удаления всех веб-прокси эта проблема исправлена!
Решено!
- На симуляторе - Аппаратное обеспечение ---- Удалите все содержимое и настройки - Закройте код и симуляторы - Удалите содержимое ~/Library/Developer/Xcode/DerivedData/ModuleCache -Запустите код...