Быстрый запуск тестовой среды приложения

В этом Быстром запуске Вы будите приложение OS X и работающий в песочнице. Вы проверяете, что приложение действительно поигралось в песочнице, и затем изучите, как диагностировать и разрешить ошибку Песочницы типового приложения. Приложениями, которые Вы используете, является XCode, Доступ Цепочки для ключей, Монитор Действия и Консоль.

Создайте проект XCode

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

bullet
Создать проект XCode для этого Быстрого запуска
  1. В Xcode 4 создайте новый проект XCode для приложения Какао OS X.

    • Назовите AppSandboxQuickStart проекта.

    • Установите идентификатор компании, такой как com.yourcompany, если ни один уже не установлен.

    • Гарантируйте, что Использование, Автоматический Подсчет ссылок выбран и что снимаются другие флажки.

  2. В навигаторе проекта щелкните по файлу пера MainMenu (MainMenu.xib).

    Интерфейсный холст Разработчика появляется.

  3. В прикреплении XCode щелкните по Объекту окна.

    Окно приложения теперь видимо на холсте.

  4. В библиотеке объектов (в области утилит), найдите WebView объект.

  5. Перетащите веб-представление на окно на холсте.

  6. (Необязательно) Для улучшения дисплея веб-представления в запущенном приложении выполните следующие шаги:

    • Перетащите средства управления калибровкой на веб-представлении так, чтобы оно полностью заполнило основное представление окна.

    • Используя инспектора размера для веб-представления, гарантируйте, что все внутренние и внешние ограничения автокалибровки активны.

  7. Добавьте платформу WebKit к приложению.

    • Импортируйте платформу WebKit путем добавления следующего утверждения выше интерфейсного блока в AppDelegate.h заголовочный файл:

      #import <WebKit/WebKit.h>
    • Соедините платформу WebKit с проектом Быстрого запуска как требуемая платформа.

  8. Создайте и соедините выход для веб-представления в AppDelegate класс.

    В интерфейсе делегата приложения (любой в AppDelegate.h или в категории в AppDelegate.m), добавьте это:

    @property (weak) IBOutlet WebView *webView;

    Тогда синтезируйте свойство в реализации (в AppDelegate.m):

    @synthesize webView = _webView;
  9. Подключите веб-представление к делегату приложения выход, который Вы просто создали.

  10. Добавьте следующий awakeFromNib метод к AppDelegate.m файл реализации:

    - (void) awakeFromNib {
        [self.webView.mainFrame loadRequest:
            [NSURLRequest requestWithURL:
                [NSURL URLWithString: @"http://www.apple.com"]]];
    }

    На запуске приложения этот метод запрашивает указанный URL от сетевого соединения компьютера и затем отправляет результат в веб-представление для дисплея.

Теперь, создайте и выполните приложение — который еще не поигрался в песочнице и также - свободный доступ к системным ресурсам включая его сетевые сокеты. Подтвердите, что окно приложения выводит на экран страницу, которую Вы указали в awakeFromNib метод. (Если Вы получаете декоративное окно, удостоверьтесь, что выход должным образом подключен к веб-представлению.)

Когда сделано, выходит из приложения.

Включите тестовую среду приложения

Вы включаете Тестовую среду приложения путем установки флажка в цели XCode редактор.

В XCode щелкните по файлу проекта в навигаторе проекта и щелкните AppSandboxQuickStart цель, если они уже не выбраны. Просмотрите вкладку Summary целевого редактора.

bullet
Включить Тестовую среду приложения для проекта
  1. На вкладке Summary целевого редактора быть уверенным проверяется флажок «Use Entitlements file», и укажите файл для тех прав.

    Право является парой ключ/значение, определенной в файле списка свойств, присуждающем определенную возможность или право доступа к цели.

    При щелчке по Enable Entitlements Xcode автоматически проверяет флажок Code Sign Application и флажок Enable App Sandboxing. Вместе, это существенные настройки проекта для включения Тестовой среды приложения.

    При щелчке по «Use Entitlements file» Xcode также создает a .entitlements файл списка свойств, видимый в навигаторе проекта. Поскольку Вы используете графический дающий право интерфейс в целевом редакторе, XCode обновляет файл списка свойств.

  2. Если Вы используете более старую версию XCode, не имеющего флажка для включения iCloud, очищающего содержание дающих право полей iCloud.

    Этот Быстрый запуск не использует iCloud. Поскольку более старые версии XCode автоматически добавили дающие право значения iCloud при включении прав удалите их следующим образом:

    • На вкладке Summary целевого редактора выберите и затем удалите содержание поля Key-Value Store iCloud.

    • Щелкните по верхнему ряду в поле Containers iCloud и щелкните минус кнопка.

В этой точке в Быстром запуске Вы включили Тестовую среду приложения, но еще не обеспечили идентификационные данные подписывания кода для проекта XCode. Если Вы уже сконфигурировали свою систему с идентификационными данными подписания, XCode должен принять значение по умолчанию к использованию Ваших идентификационных данных разработки при подписании этого приложения.

Если Ваша система не будет сконфигурирована с идентификационными данными разработки, и Вы пытаетесь разработать проект, то сборка перестанет работать; прежде чем Вы продолжите это учебное руководство, создадите идентификационные данные подписывания кода, как описано в Руководстве по Распределению приложений.

Теперь, создайте приложение.

Подтвердите, что приложение поигралось в песочнице

Создайте и выполните приложение Быстрого запуска. Окно открывается, но если приложение успешно поигралось в песочнице, никакой веб-контент не появляется. Это вызвано тем, что Вы еще не присудили разрешение получить доступ к сетевому соединению.

Кроме блокированного поведения, существует три определенных знака, что приложение OS X успешно поигралось в песочнице.

bullet
Подтвердить, что приложение Быстрого запуска успешно поигралось в песочнице
  1. В Средстве поиска смотрите на содержание ~/Library/Containers/ папка.

    Если приложение Быстрого запуска поигралось в песочнице, существует теперь контейнерная папка, названная в честь Вашего приложения. Имя включает идентификатор компании для проекта, таким образом, полное имя папки было бы, например, com.yourcompany.AppSandboxQuickStart.

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

  2. В Мониторе Действия проверьте, что система распознает приложение, как поигравшийся в песочнице.

    • Монитор действия запуска (доступный в /Applications/Utilities).

    • В Мониторе Действия выберите View> Columns.

      Гарантируйте, что проверяется пункт меню Sandbox.

    • В столбце Sandbox подтвердите, что значение для приложения Быстрого запуска - Да.

      Чтобы упростить определять местоположение приложения в мониторе Действия, введите имя приложения Быстрого запуска в поле Filter.

  3. Проверьте, что двоичный файл приложения поигрался в песочнице.

    codesign -dvvv --entitlements :- executable_path

    где executable_path полный путь для основного исполнимого двоичного файла приложения (например, Quick Start.app/Contents/MacOS/Quick Start).

Разрешите нарушение тестовой среды приложения

Нарушение Тестовой среды приложения происходит, если Ваше приложение пытается сделать что-то, что не позволяет Тестовая среда приложения. Например, Вы уже видели в этом Быстром запуске, что поигравшее в песочнице приложение неспособно получить содержание от сети. Тонкозернистое ограничение по доступу к системным ресурсам является основой того, как Тестовая среда приложения обеспечивает защиту, должен приложение становиться поставившим под угрозу вредоносным кодом.

Наиболее распространенный источник нарушений Тестовой среды приложения является несоответствием между дающими право настройками, которые Вы указали в XCode и потребностях Вашего приложения. В этом разделе Вы наблюдаете и затем исправляете нарушение Тестовой среды приложения.

bullet
Диагностировать нарушение Тестовой среды приложения
  1. Создайте и выполните приложение Быстрого запуска.

    Приложение обычно запускается, но не удается вывести на экран веб-страницу, указанную в awakeFromNib метод (как Вы ранее заметили в, Подтверждают, Что Приложение Поигралось в песочнице). Поскольку отображение веб-страницы работало правильно перед игрой в песочнице приложения является надлежащим в этом случае подозревать нарушение Тестовой среды приложения.

  2. Откройте Консольное приложение (доступный в /Applications/Utilities/) и гарантируйте, что Все сообщения выбраны на боковой панели.

    В поле фильтра Консоли войти sandboxd вывести на экран только нарушения Тестовой среды приложения.

    sandboxd имя демона Тестовой среды приложения, сообщающего относительно нарушений песочницы. Соответствующие сообщения, как выведено на экран в Консоли, выглядят подобными следующему:

    ../Art/sandbox_errors.png../Art/sandbox_errors.png

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

Шаги в предыдущей задаче иллюстрируют общий образец для использования для идентификации нарушений Тестовой среды приложения:

  1. Подтвердите, что нарушение происходит только с Тестовой средой приложения, включенной в Вашем проекте.

  2. Вызовите нарушение (такой как путем попытки использовать сетевое соединение, если приложение разработано, чтобы сделать это).

  3. Посмотрите в консоли для sandboxd сообщения.

Существует также простой, общий образец для использования для разрешения таких нарушений.

bullet
Разрешить нарушение Тестовой среды приложения путем добавления надлежащего права
  1. Выйдите из приложения Быстрого запуска.

  2. На вкладке Summary целевого редактора ищите право, соответствующее сообщаемому sandboxd нарушение.

    В этом случае основная ошибка deny network-outbound. Соответствующее право, Позволяют Исходить Сетевые соединения.

  3. На вкладке Summary целевого редактора установите флажок Allow Outgoing Network Connections.

    Выполнение так применяет a TRUE значение, для необходимого права, к проекту XCode.

  4. Создайте и выполните приложение.

    Намеченная веб-страница теперь выводит на экран в приложении. Кроме того, в Консоли нет никаких новых сообщений нарушения Тестовой среды приложения.