Ошибка "The file 'MyApp.app' couldn't be opened because you don't have permission to view it" в Xcode
Причина ошибки
Эта ошибка возникает из-за того, что Xcode не может получить доступ к исполняемому файлу вашего приложения (MyApp.app). В Xcode 6 Beta 4 это часто связано с тем, что симулятор не может правильно смонтировать образ приложения из-за проблем с разрешениями файловой системы macOS. Иногда это происходит, когда Xcode создаёт приложение в папке DerivedData с некорректными правами доступа.
Основное решение: сброс настроек симулятора и очистка DerivedData
Самый надёжный способ — полностью очистить кэш симулятора и пересобрать проект. Выполните следующие шаги:
- Закройте Xcode полностью (Cmd+Q).
- Сбросьте симулятор iOS: Откройте Симулятор (
Xcode → Open Developer Tool → Simulator), затем в меню выберитеSimulator → Reset Content and Settings…(илиDevice → Erase All Content and Settingsв старых версиях). - Удалите папку DerivedData: Откройте Finder, нажмите Cmd+Shift+G и введите
~/Library/Developer/Xcode/DerivedData. Удалите всю эту папку (или только папку вашего проекта). - Перезагрузите Mac — это гарантирует, что все временные файлы и блокировки будут сняты.
- Откройте Xcode снова и выполните
Product → Clean Build Folder(удерживая Option). Затем соберите и запустите проект (Cmd+R).
Если не помогло — измените схему сборки
Иногда проблема связана с тем, что Xcode пытается запустить приложение на симуляторе, который не полностью совместим с текущей конфигурацией. Попробуйте:
- Смените симулятор: В строке состояния Xcode (возле кнопки Run) выберите другой симулятор, например, iPhone 6 вместо iPhone 5s.
- Проверьте настройки схемы:
Product → Scheme → Edit Scheme…. Во вкладкеRun → Infoубедитесь, что дляBuild ConfigurationвыбраноDebug, а галочкаAllow debugging when using document versionsснята (если она есть).
Пример исправления через терминал
Если ничего из вышеперечисленного не работает, можно вручную сбросить права доступа к папке симулятора:
# Закройте Xcode и симулятор
killall Xcode 2>/dev/null; killall "Simulator" 2>/dev/null
# Удалите кэш симулятора
rm -rf ~/Library/Developer/CoreSimulator/Caches/*
rm -rf ~/Library/Developer/Xcode/DerivedData/*
# Сбросьте права на папку симулятора
sudo chmod -R 777 ~/Library/Developer/CoreSimulator/Devices/
# Перезагрузите Finder (чтобы изменения применились)
killall Finder
После этого снова откройте Xcode и попробуйте запустить проект. Важно: команда sudo chmod -R 777 даёт полный доступ всем пользователям — используйте её только как временное решение и верните стандартные права позже (обычно 755 для папок).
Дополнительные советы
- Обновите Xcode: Если вы всё ещё используете Beta 4, попробуйте установить более новую версию (Xcode 6 GM или Xcode 7+). Бета-версии часто содержат такие баги.
- Проверьте подпись кода: В настройках проекта (
Target → General → Signing) укажите свою команду разработчика. Для симулятора подпись не обязательна, но иногда Xcode блокирует запуск без неё. - Создайте новый проект: Если проблема остаётся, создайте новый проект с тем же именем и перенесите код — это может сбросить битые настройки.
Альтернативный подход: использование Xcode 6 GM (Golden Master)
Проблема с разрешениями в Xcode 6 Beta 4 была широко известна и связана с багом в ранней версии симулятора. Самое простое решение — перейти на финальную версию Xcode 6 (GM), которая вышла в сентябре 2014 года. В ней этот баг был исправлен.
Если по каким-то причинам вы не можете обновиться, попробуйте следующий трюк:
- Запустите приложение в режиме Release: В схеме (
Edit Scheme → Run → Build Configuration) временно переключите наRelease. Сборка в Release не включает отладочные символы, и симулятор иногда лучше обрабатывает разрешения. - Используйте физическое устройство: Если у вас есть iPhone или iPad под управлением iOS 8 Beta, подключите его к Mac и запустите приложение на устройстве. Ошибка "permission" возникает только в симуляторе, на реальном устройстве её нет.
Быстрое исправление без переустановки
Иногда достаточно просто сбросить кэш симулятора через интерфейс Xcode:
- Откройте
Window → Devices and Simulators. - Выберите вкладку
Simulators. - Кликните правой кнопкой мыши по вашему симулятору (например, "iPhone 6") и выберите
Delete. - Нажмите кнопку
+внизу слева, чтобы создать новый симулятор с теми же параметрами. - Попробуйте запустить проект заново.
Этот метод удаляет только конфигурацию конкретного симулятора, не затрагивая другие данные, и часто решает проблему за пару минут.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги