Avatar ·

Ошибка "The file 'MyApp.app' couldn't be opened because you don't have permission to view it" в Xcode

Привет, коллеги! Я новичок в Swift и Xcode, и столкнулся с очень странной проблемой. Использую Xcode 6 Beta 4, пишу простое приложение на Swift. Когда я нажимаю кнопку Run (▶️), сборка проходит успешно, Xcode пишет "Build Succeeded", но затем появляется диалоговое окно с ошибкой: "The file 'MyApp.app' couldn't be opened because you don't have permission to view it." Вот мой простой код (файл ViewController.swift): ```swift import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let label = UILabel(frame: CGRect(x: 100, y: 100, width: 200, height: 50)) label.text = "Hello, Swift!" label.textColor = UIColor.black self.view.addSubview(label) } } ``` Ничего сложного, обычный лейбл. Приложение даже не запускается — просто вылетает эта ошибка. Я перепроверил настройки подписи кода (Code Signing), там всё стоит "iOS Developer". Пробовал чистить проект (Product → Clean), удалял DerivedData, перезагружал Xcode и даже Mac — не помогает. В чём может быть дело? Это баг Xcode 6 Beta или я что-то упускаю в настройках проекта? Как это исправить? Заранее спасибо за помощь! <<>>

Причина ошибки

Эта ошибка возникает из-за того, что Xcode не может получить доступ к исполняемому файлу вашего приложения (MyApp.app). В Xcode 6 Beta 4 это часто связано с тем, что симулятор не может правильно смонтировать образ приложения из-за проблем с разрешениями файловой системы macOS. Иногда это происходит, когда Xcode создаёт приложение в папке DerivedData с некорректными правами доступа.

Основное решение: сброс настроек симулятора и очистка DerivedData

Самый надёжный способ — полностью очистить кэш симулятора и пересобрать проект. Выполните следующие шаги:

  1. Закройте Xcode полностью (Cmd+Q).
  2. Сбросьте симулятор iOS: Откройте Симулятор (Xcode → Open Developer Tool → Simulator), затем в меню выберите Simulator → Reset Content and Settings… (или Device → Erase All Content and Settings в старых версиях).
  3. Удалите папку DerivedData: Откройте Finder, нажмите Cmd+Shift+G и введите ~/Library/Developer/Xcode/DerivedData. Удалите всю эту папку (или только папку вашего проекта).
  4. Перезагрузите Mac — это гарантирует, что все временные файлы и блокировки будут сняты.
  5. Откройте 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:

  1. Откройте Window → Devices and Simulators.
  2. Выберите вкладку Simulators.
  3. Кликните правой кнопкой мыши по вашему симулятору (например, "iPhone 6") и выберите Delete.
  4. Нажмите кнопку + внизу слева, чтобы создать новый симулятор с теми же параметрами.
  5. Попробуйте запустить проект заново.

Этот метод удаляет только конфигурацию конкретного симулятора, не затрагивая другие данные, и часто решает проблему за пару минут.