Кау устроена iOS
Все в курсе, что мобильные девайсы Apple работают под управлением iOS. Многие знают, что iOS представляет собой облегченную версию настольной Mac OS X. Некоторые догадываются, что в основе Mac OS X лежит POSIX-совместимая ОС Darwin, а те, кто всерьез интересуется IT, в курсе, что основа Darwin — это ядро XNU, появившееся на свет в результате слияния микроядра Mach и компонентов ядра FreeBSD. Однако все это голые факты, которые ничего не скажут нам о том, как же на самом деле работает iOS и в чем ее отличия от настольного собрата.
Mac OS X
Операционная система, установленная сегодня на все маки и (в измененном виде) на айдевайсы, ведет свою историю аж с 1988 года, который в мире IT известен также тем, что стал годом выпуска первой бета-версии операционной системы NeXTSTEP. Сама NeXTSTEP была детищем команды разработчиков Стива Джобса, который к тому времени уже покинул Apple и основал компанию NeXT, которая занялась разработкой компьютеров для образовательных нужд.
В момент своего появления на свет NeXTSTEP была поистине передовой операционной системой, которая включала в себя множество технологических новаций. В основе ОС лежало модифицированное микроядро Mach, дополненное компонентами ядра FreeBSD, включая эталонную реализацию сетевого стека. Более высокоуровневые компоненты NeXTSTEP были написаны с использованием языка Objective-C и предоставляли разработчикам приложений богатый объектно-ориентированный API. Система была снабжена развитым и весьма удобным графическим интерфейсом (ключевые компоненты которого сохранились в OS X и даже iOS) и мощной средой разработки, включавшей в себя в том числе известный всем современным разработчикам визуальный дизайнер интерфейса.
После провала NeXT и возвращения Стива Джобса в компанию Apple в 1997 году NeXTSTEP легла в основу проекта Rhapsody, в рамках которого началась разработка системы-наследника Mac OS 9. В 2000 году из Rhapsody был выделен открытый проект Darwin, исходники которого опубликованы под лицензией APSL, а уже в 2001 году появилась на свет OS X 10.0, построенная на его основе. Спустя несколько лет Darwin лег в основу операционной системы для готовящегося к выпуску смартфона, о котором до 2007-го, кроме слухов, не было известно почти ничего.

XNU и Darwin
Условно начинку OS X / iOS можно разделить на три логических уровня: ядро XNU, слой совместимости со стандартом POSIX (плюс различные системные демоны/сервисы) и слой NeXTSTEP, реализующий графический стек, фреймворк и API приложений. Darwin включает в себя первые два слоя и распространяется свободно, но только в версии для OS X. iOS-вариант, портированный на архитектуру ARM и включающий в себя некоторые доработки, полностью закрыт и распространяется только в составе прошивок для айдевайсов (судя по всему, это защита от портирования iOS на другие устройства).
По своей сути Darwin — это «голая» UNIX-подобная ОС, которая включает в себя POSIX API, шелл, набор команд и сервисов, минимально необходимых для работы системы в консольном режиме и запуска UNIX-софта. В этом плане он похож на базовую систему FreeBSD или минимальную установку какого-нибудь Arch Linux, которые позволяют запустить консольный UNIX-софт, но не имеют ни графической оболочки, ни всего необходимого для запуска серьезных графических приложений из сред GNOME или KDE.
Ключевой компонент Darwin — гибридное ядро XNU, основанное, как уже было сказано выше, на ядре Mach и компонентах ядра FreeBSD, таких как планировщик процессов, сетевой стек и виртуальная файловая система (слой VFS). В отличие от Mach и FreeBSD, ядро OS X использует собственный API драйверов, названный I/O Kit и позволяющий писать драйверы на C++, используя объектно-ориентированный подход, сильно упрощающий разработку.
iOS использует несколько измененную версию XNU, однако в силу того, что ядро iOS закрыто, сказать, что именно изменила Apple, затруднительно. Известно только, что оно собрано с другими опциями компилятора и модифицированным менеджером памяти, который учитывает небольшие объемы оперативки в мобильных устройствах. Во всем остальном это все то же XNU, которое можно найти в виде зашифрованного кеша (ядро + все драйверы/модули) в каталоге /System/Library/Caches/com.apple.kernelcaches/kernelcache на самом устройстве.
Уровнем выше ядра в Darwin располагается слой UNIX/BSD, включающий в себя набор стандартных библиотек языка си (libc, libmatch, libpthread и так далее), а также инструменты командной строки, набор шеллов (bash, tcsh и ksh) и демонов, таких как launchd и стандартный SSH-сервер. Последний, кстати, можно активировать путем правки файла /System/Library/LaunchDaemons/ssh.plist. Если, конечно, джейлбрейкнуть девайс.
На этом открытая часть ОС под названием Darwin заканчивается, и начинается слой фреймворков, которые как раз и образуют то, что мы привыкли считать OS X / iOS.


Фреймворки
Darwin реализует лишь базовую часть Mac OS / iOS, которая отвечает только за низкоуровневые функции (драйверы, запуск/остановка системы, управление сетью, изоляция приложений и так далее). Та часть системы, которая видна пользователю и приложениям, в его состав не входит и реализована в так называемых фреймворках — наборах библиотек и сервисов, которые отвечают в том числе за формирование графического окружения и высокоуровневый API для сторонних и стоковых приложений
INFO
Как и во многих других ОС, API Mac OS и iOS разделен на публичный и приватный. Сторонним приложениям доступен исключительно публичный и сильно урезанный API, однако jailbreak-приложения могут использовать и приватный.
В стандартной поставке Mac OS и iOS можно найти десятки различных фреймворков, которые отвечают за доступ к самым разным функциям ОС — от реализации адресной книги (фреймворк AddressBook) до библиотеки OpenGL (GLKit). Набор базовых фреймворков для разработки графических приложений объединен в так называемый Cocoa API, своего рода метафреймворк, позволяющий получить доступ к основным возможностям ОС. В iOS он носит имя Cocoa Touch и отличается от настольной версии ориентацией на сенсорные дисплеи.
Далеко не все фреймворки доступны в обеих ОС. Многие из них специфичны только для iOS. В качестве примеров можно привести AssetsLibrary, который отвечает за работу с фотографиями и видео, CoreBlueTooth, позволяющий получить доступ к синезубу, или iAd, предназначенный для вывода рекламных объявлений в приложениях. Другие фреймворки существуют только в настольной версии системы, однако время от времени Apple переносит те или иные части iOS в Mac OS или обратно, как, например, случилось с фреймворком CoreMedia, который изначально был доступен только в iOS.
Все стандартные системные фреймворки можно найти в системном каталоге /System/Library/Frameworks/. Каждый из них находится в своем собственном каталоге, называемом бандлом (boundle), который включает в себя ресурсы (изображения и описание элементов интерфейса), хидеры языка си, описывающие API, а также динамически загружаемую библиотеку (в формате dylib) с реализацией фреймворка.
Одна из интересных особенностей фреймворков — их версионность. Один фреймворк может иметь сразу несколько разных версий, поэтому приложение, разработанное для устаревших версий системы, будет продолжать работать, даже несмотря на изменения, внесенные в новые версии ОС. Именно так реализован механизм запуска старых iOS-приложений в iOS 7 и выше. Приложение, разработанное для iOS 6, будет выглядеть и работать именно так, как если бы оно было запущено в iOS 6.
SpringBoard
Уровнем выше находятся приложения, системные и устанавливаемые из магазина приложений. Центральное место среди них занимает, конечно же, SpringBoard (только в iOS), реализующее домашний экран (рабочий стол). Именно оно запускается первым после старта системных демонов, загрузки в память фреймворков и старта дисплейного сервера (он же менеджер композитинга, он же Quartz Compositor), отвечающего за вывод изображения на экран.
SpringBoard — это связующее звено между операционной системой и ее пользователем, графический интерфейс, позволяющий запускать приложения, переключаться между ними, просматривать уведомления и управлять некоторыми настройками системы (начиная с iOS 7). Но также это и обработчик событий, таких как касание экрана или переворот устройства. В отличие от Mac OS X, которая использует различные приложения и демоны-агенты для реализации компонентов интерфейса (Finder, Dashboard, LaunchPad и другие), в iOS почти все базовые возможности интерфейса пользователя, в том числе экран блокировки и «шторка», заключены в одном SpringBoard.
В отличие от других стоковых приложений iOS, которые располагаются в каталоге /Applications, SpringBoard наравне с дисплейным сервером считается частью фреймворков и располагается в каталоге /System/Library/CoreServices/. Для выполнения многих задач он использует плагины, которые лежат в /System/Library/SpringBoardPlugins/. Кроме всего прочего, там можно найти, например, NowPlayingArtLockScreen.lockboundle, отвечающий за отображение информации о проигрываемой композиции на экране блокировки, или IncomingCall.serviceboundle, ответственный за обработку входящего звонка.
Начиная с iOS 6 SpringBoard разделен на две части: сам рабочий стол и сервис BackBoard, ответственный за коммуникации с низкоуровневой частью ОС, работающей с оборудованием (уровень HAL). BackBoard отвечает за обработку таких событий, как касания экрана, нажатия клавиш, получение показания акселерометра, датчика положения и датчика освещенности, а также управляет запуском, приостановкой и завершением приложений.
SpringBoard и BackBoard имеют настолько большое значение для iOS, что, если каким-либо образом их остановить, вся система застынет на месте и даже запущенное в данный момент приложение не будет реагировать на касания экрана. Это отличает их от домашнего экрана Android, который является всего лишь стандартным приложением, которое можно остановить, заменить или вообще удалить из системы (в этом случае на экране останутся вполне рабочие кнопки навигации и строка состояния со «шторкой»).
Приложения
На самой вершине этой пирамиды находятся приложения. iOS различает встроенные (стоковые) высоко привилегированные приложения и сторонние, устанавливаемые из iTunes. И те и другие хранятся в системе в виде бандлов, во многом похожих на те, что используются для фреймворков. Разница заключается лишь в том, что бандл приложения включает в себя несколько иную метаинформацию, а место динамической библиотеки занимает исполняемый файл в формате Mach-O.
Стандартный каталог хранения стоковых приложений — /Applications/. В iOS он абсолютно статичный и изменяется только во время обновлений системы; пользователь получить к нему доступ не может. Сторонние приложения, устанавливаемые из iTunes, напротив, хранятся в домашнем каталоге пользователя /var/mobile/Applications/ внутри подкаталогов, имеющих вид 4-2-2-2-4, где два и четыре — это шестнадцатеричные числа. Это так называемый GUID — уникальный идентификатор, который однозначно идентифицирует приложение в системе и нужен в том числе для создания изолированной песочницы (sandbox).
Sandbox
В iOS песочницы используются для изолирования сервисов и приложений от системы и друг от друга. Каждое стороннее приложение и большинство системных работают в песочнице. С технической точки зрения песочница представляет собой классический для мира UNIX chroot, усиленный системой принудительного контроля доступа TrustedBSD MAC (модуль ядра sandbox.kext), которая отрезает приложениям не только доступ к файлам за пределами домашнего каталога, но и прямой доступ к железу и многим системным функциям ОС.
В целом заключенное в sandbox приложение ограничено в следующих возможностях:
- Доступ к файловой системе за исключением своего собственного каталога и домашнего каталога пользователя.
- Доступ к каталогам Media и Library внутри домашнего каталога за исключением Media/DCIM/, Media/Photos/, Library/AddressBook/, Library/Keyboard/ и Library/Preferences/.
- Доступ к информации о других процессах (приложение «считает» себя единственным в системе).
- Прямой доступ к железу (разрешено использовать только Cocoa API и другие фреймворки).
- Ограничение на использование оперативной памяти (контролируется механизмом Jatsam).
Все эти ограничения соответствуют sandbox-профилю (набору ограничивающих правил) container и применяются к любому стороннему приложению. Для стоковых приложений, в свою очередь, могут применяться другие ограничения, более мягкие или жесткие. В качестве примера можно привести почтовый клиент (профиль MobileMail), который в целом имеет такие же серьезные ограничения, как и сторонние приложения, но может получить доступ ко всему содержимому каталога Library/. Обратная ситуация — SpringBoard, вообще не имеющий ограничений.
Внутри песочниц работают многие системные демоны, включая, например, AFC, предназначенный для работы с файловой системой устройства с ПК, но ограничивающий «область видимости» только домашним каталогом пользователя. Все доступные системные sandbox-профили располагаются в каталоге /System/Library/Sandbox/Profiles/* и представляют собой наборы правил, написанных на языке Scheme. Кроме этого, приложения также могут включать в себя дополнительные наборы правил, называемых entitlement. По сути, это все те же профили, но вшитые прямо в бинарный файл приложения (своего рода самоограничение). Просмотреть эти правила можно, например, так:
# cat -tv /Applications/MobileSafari.app/MobileSafari | tail -31 | more
Смысл существования всех этих ограничений двойной. Первая (и главная) задача, которую решает sandbox, — это защита от вредоносных приложений. Вкупе с тщательной проверкой опубликованных в iTunes приложений и запретом на запуск не подписанных цифровым ключом приложений (читай: любых, полученных не из iTunes) такой подход дает прекрасный результат и позволяет iOS находиться на вершине в списке самых защищенных от вирусов ОС.
Вторая проблема — это защита системы от самой себя и пользователя. Баги могут существовать как в стоковом софте от Apple, так и в головах юзеров. Sandbox защищает от обоих. Даже если злоумышленник найдет дыру в Safari и попытается ее эксплуатировать, он все равно останется в песочнице и не сможет навредить системе. А юзер не сможет «сломать свой любимый телефончик» и не напишет гневных отзывов в адрес Apple. К счастью, знающие люди всегда могут сделать jailbreak и обойти защиту sandbox (собственно, в этом и есть смысл джейлбрейка).
Многозадачность
Одна из самых спорных особенностей iOS — это реализация многозадачности. Она вроде бы и есть, а с другой стороны, ее нет. В сравнении с традиционными настольными ОС и пресловутым Android iOS не является многозадачной операционной системой в привычном смысле этого слова и не позволяет приложениям свободно работать в фоне. Вместо этого ОС реализует API, который приложение может использовать для выполнения отдельных задач, пока оно находится в фоновом режиме.
Впервые такой API появился в iOS 4 (до этого фоновые задачи могли выполнять только стоковые приложения) и наращивался по мере развития операционной системы. Сегодня (речь идет об iOS 7) так называемый Background API позволяет делать следующее:
- проигрывать аудио;
- совершать VoIP-звонки;
- получать информацию о смене местоположения;
- получать push-уведомления;
- планировать отложенный вывод уведомлений;
- запрашивать дополнительное время для завершения работы после перехода в фоновый режим;
- обмениваться данными с подключенными к девайсу аксессуарами (в том числе Bluetooth);
- получать и отправлять данные по сети (начиная с iOS 7).
Такие ограничения на работу в фоне необходимы в первую очередь для того, чтобы сохранить заряд батареи и избежать лагов интерфейса, так знакомых пользователям Android, где приложения могут делать в фоне все что захотят. На самом деле Apple настолько сильно заботится о сохранении батареи, что даже реализовала специальный механизм для группировки фоновых действий приложений и их запуска в нужные моменты, например тогда, когда смартфон активно используется, подключен к Wi-Fi-сети или к зарядному устройству.
Выводы
Стоит сказать, что за время своего развития и последующего переезда в мобильные девайсы NeXTSTEP не только не растеряла все свои достоинства, но и приумножила их. Можно долго слушать россказни сотрудников Google, уверяющих, что Android разрабатывался без оглядки на iOS, но факт остается фактом: многие архитектурные решения Android позаимствовал именно у iOS. И не потому, что так было проще, а благодаря их красоте и эффективности.
Шесть стадий загрузки iOS
- Boot ROM. После включения устройства первым запускается минималистичный загрузчик, прошитый в постоянную память устройства. Его задача — произвести начальную инициализацию железа и передать управление первичному загрузчику LLB. Boot ROM всегда имеет заводскую прошивку и не может быть обновлен.
- Low Level Bootloader (LLB). Далее управление получает LLB. Это первичный загрузчик, задача которого — найти в памяти устройства iBoot, проверить его целостность и передать ему управление либо переключить девайс в режим восстановления, если это не удалось. Код LLB хранится в NAND-памяти устройства и обновляется вместе с установкой новой версии прошивки. Кроме всего прочего, он выводит на экран загрузочный логотип.
- iBoot. Это вторичный и основной загрузчик айдевайсов. Он включает в себя драйвер файловой системы, с помощью которого получает доступ к содержимому NAND-памяти, находит ядро и передает ему управление. В iBoot также встроен драйвер UART, с помощью которого можно производить отладку ядра и ОС, подключив девайс к COM-порту или USB-порту компа (с помощью кабеля USB — UART).
4 Ядро. Здесь все как обычно. Ядро производит инициализацию оборудования, после чего передает управление демону launchd.
5 Launchd. Это первичный процесс iOS и Mac OS X, он подключает файловые системы, запускает демоны/службы (например, backupd, configd, locationd), дисплейный сервер, фреймворки, а на последнем этапе загрузки отдает управление SpringBoard. В iOS и Mac OS X launchd используется как замена стандартного /bin/init в UNIX, однако его функциональность гораздо шире.
6 SpringBoard. Вот и экран блокировки!
Первые четыре этапа в этой цепи образуют chain of trust, реализованный с помощью сверки цифровой подписи загружаемого компонента. Цифровую подпись имеют LLB, iBoot и ядро, что позволяет исключить внедрение в цепочку хакнутого загрузчика или ядра, которые могут быть использованы для загрузки сторонней операционной системы или джейлбрейка. Единственный способ обойти этот механизм — найти дыру в одном из загрузчиков и воспользоваться ею для обхода проверки. В свое время было найдено несколько таких дыр в Boot ROM (наиболее известен эксплойт limera1n от geohot, актуальный для iPhone 1–4), а в начале 2014 года и в iBoot (хакер iH8sn0w, эксплойт так и не был опубликован).
Удерживая кнопку «Домой» при включении iPhone, можно заставить iBoot загрузиться в так называемый режим восстановления (Recovery), который позволяет восстановить прошивку iOS или обновить ее, используя iTunes. Однако механизм автоматического OTA-обновления использует другой режим, именуемый DFU (Device Firmware Upgrade), который активируется на раннем этапе загрузки сразу после Boot ROM и реализован в двух компонентах: iBSS и iBEC. По сути, это аналоги LLB и iBoot, конечная цель которых — не загрузить ОС, а перевести смартфон в режим обновления.

Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
XCode
XCode — среда для разработки программного обеспечения под операционные системы Apple. С ее помощью можно писать и проверять код, запускать программы, описывать графические интерфейсы и их связь с кодом.

«IT-специалист с нуля» наш лучший курс для старта в IT

XCode — IDE: эта аббревиатура означает Integrated development environment, что переводится как «интегрированная (или единая) среда разработки». Так называют инструменты, в которых есть все необходимое как для написания кода, так и сборки готового проекта.
Среда предназначена для операционной системы macOS. Проекты, которые создаются с ее помощью, также можно запускать на iOS, tvOS и watchOS. XCode поддерживает языки программирования Swift, Objective-C, C, C++, а также AppleScript, Python, Ruby и Java. Сторонние разработчики также реализовали поддержку других языков, в том числе старых: Haskell, Pascal, Ada и других.
XCode бесплатно доступен для пользователей macOS в Mac App Store. Актуальная версия на март 2022 года — 13.2.1.
13 месяцев
iOS-разработчик
Создавайте приложения, которые выйдут в топ App Store
Кто пользуется XCode
- iOS-разработчики, а также создатели приложений для «умных» часов и телевизоров от Apple: они управляются системами watchOS и tvOS соответственно.
- macOS-разработчики, создающие новое ПО для этой ОС или переносящие на нее уже существующие программы на Swift, AppleScript и Objective-C.
- Разработчики на Python, Ruby, Java и других языках, создающие кроссплатформенные или веб-приложения.
Применение XCode
- Быстрое и удобное написание кода с помощью специального текстового редактора с подсветкой и проверкой синтаксиса, подсчетом строк и другими функциями.
- Создание и организация крупных проектов, которые могут включать в себя много файлов и папок. Среда помогает структурировать работу.
- Компиляция или интерпретация кода, то есть его преобразование в понятный машине формат.
- Выполнение кода. С помощью IDE можно запускать программу и отслеживать результаты ее работы.
- Отладка и тестирование — работа по поиску и устранению ошибок в коде.
- Создание графических интерфейсов и их связь с кодом.
- Автоматизация сборки готового проекта.
- Упрощение архитектурных и конструкторских задач: их помогают решать вспомогательные инструменты, которые наглядно показывают структуру кода или проекта.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Из чего состоит среда XCode
Инструменты, которые есть в этой IDE, подобраны так, чтобы разработчику было легко пройти полный цикл создания приложения, в первую очередь под платформы Apple.
Редактор кода. Он похож на текстовый редактор, но отличается более широкой функциональностью. Редактор кода распознает синтаксис языка, подсвечивает его конструкции для большей читаемости. Он может сигнализировать об ошибках в синтаксисе или давать краткую справку о той или иной команде. Он подсчитывает строки, имеет гибкие возможности для навигации по коду и выполняет множество других функций.
В редакторе программист пишет код, а потом сохраняет его в виде файла в нужном формате. XCode позволяет его открывать и редактировать.
Редактор графических интерфейсов. В XCode по умолчанию входит приложение Interface Builder — редактор интерфейсов. С его помощью можно быстро создавать GUI для своих программ. Редактор содержит наборы — палитры стандартных элементов интерфейса: их можно создавать, настраивать и редактировать.
Созданный интерфейс можно связать с кодом и таким образом получить полностью функциональное приложение.
Поддержка языков программирования. Программирование в XCode во многом адаптировано под Swift и Objective-C — языки, которые активнее всего используются в экосистеме Apple. Также для комфортного использования IDE поддерживаются другие языки программирования.
Компиляторы. Компилятор — это программа, которая переводит написанную программу в машинные коды для ее запуска. Также существуют интерпретаторы — они, в отличие от компиляторов, исполняют код построчно, а не преобразуют его полностью.
В IDE должны быть компиляторы для языков, которые она поддерживает: без них программу нельзя запустить и протестировать в среде. XCode пользуется преобразованным GCC, или GNU Compiler Collection: это свободная коллекция компиляторов для популярных языков программирования.

Отладчики. Отладчик — составная часть любой масштабной IDE, программа для поиска и отладки ошибок. С его помощью можно:
- трассировать код, то есть выполнять его построчно;
- ставить метки или точки останова в определенных местах программы;
- следить за состоянием сущностей в разные моменты;
- настраивать логику для трассировки, остановки и других действий.
Так программисту легче отследить, в какой момент времени в коде происходит ошибка и с чем она связана. Он сможет быстрее понять, как ее исправить.
В XCode используется отладчик на основе GDB, или GNU Debugger — свободного программного обеспечения для отладки.

API. API помогает связать между собой разные сервисы и программные продукты. В IDE должны быть API для разных направлений разработки. В случае с XCode это в первую очередь API, которые нужны для программирования под Apple: Cocoa, Carbon и другие. Например, с их помощью разработчик связывает между собой интерфейс и код.
Фреймворки и библиотеки. Это дополнительные средства разработки, которые помогают расширить язык и добавляют новые возможности: функциональные и архитектурные.
В XCode входят фреймворки для создания серверного, десктопного и мобильного ПО, программ для интернета вещей и «умных» устройств, нейронных сетей и многого другого.
Читайте также Что выбрать: iOS- или Android-разработку?
Документация. В XCode по умолчанию входит большая часть документации Apple, которая посвящена среде разработки и ее инструментам. При изучении с нуля с документацией придется сверяться часто, но она должна быть под рукой не только у новичка.
Контроль версий. Системы контроля версий позволяют нескольким программистам работать одновременно и вносить в код разные изменения, а потом объединять их. С системами можно откатываться к предыдущим состояниям или иметь сразу несколько «веток» разработки. Наиболее популярная — Git. XCode поддерживает Git «из коробки»: создавать «точки сохранения», откатываться к ним или сливать версии можно прямо из интерфейса IDE.
Симулятор. С помощью XCode можно «симулировать» запуск программы на мобильном устройстве Apple. Это помогает понять, как приложение будет работать на реальном телефоне или планшете, и качественнее его протестировать.
Swift Playgrounds. Так называется среда для обучения языку Swift и разработки на нем. Имеет характерный интерфейс, поддержку фреймворка для графических интерфейсов SwiftUI и возможность мгновенного отображения результата кода. В Swift Playgrounds входят интерактивные уроки для быстрого обучения концепциям языка, также среда подходит для экспериментов и небольших проектов.
Создать «игровую площадку», или playground, можно в том же меню, что и проект.
Особенности XCode 12 и 13
В 2020 году была выпущена XCode 12, в 2021-м — 13. В этих последних у среды немного изменился интерфейс и появились новые возможности:
- подробная аналитика всего, что происходит при запуске программы, вплоть до расхода емкости аккумулятора;
- более удобная работа с элементами графического интерфейса;
- улучшенные автозавершение команд, контроль версий, тестирование и эмуляция мобильных устройств;
- тестирование покупок в приложениях-магазинах;
- режим vim, популярного текстового редактора для Linux;
- возможность создавать собственную документацию, в том числе с помощью языков для ее описания, и многое другое.
О различиях можно прочитать на странице IDE в официальном магазине Apple. Разные версии IDE поддерживаются в различных версиях самой macOS.
XCode в других ОС
Официально XCode разработана только для операционных систем от Apple. Чтобы запустить среду на Linux или Windows, потребуется виртуальная машина с macOS. Неофициальными сборками IDE для других ОС, которые можно найти в сети, мы не рекомендуем пользоваться.
Также существуют онлайн-сервисы, которые предоставляют «виртуальную среду» macOS со всеми ее возможностями. С ними пользователи Linux и Windows смогут работать в XCode.
Apple разрабатывает облачную версию среды — Xcode Cloud. На момент написания статьи проект находится в стадии закрытого бета-тестирования. Это значит, что для участия в тестировании разработчик должен написать в Apple, где решат, открывать ли ему доступ к продукту.
Как начать пользоваться XCode
Пользователь macOS может перейти в официальный магазин Apple и скачать оттуда XCode. Для этого не обязателен платный аккаунт разработчика: он потребуется для публикации приложений в магазине. XCode распространяется бесплатно.
После установки среды можно начать новый проект. IDE выглядит как своеобразный браузер файлов со вкладками, дополнительными панелями и инструментами. Разобраться в ней можно с помощью справки.
Чтобы работать в любой IDE, нужно знать один из языков, которые она поддерживает. Для программирования под macOS или iOS необходимо знать особенности этих систем.
Получить актуальную теорию и практику под контролем ментора можно на курсе SkillFactory.
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Статьи по теме:
Почему писать игры лучше на C#, а для создания крупных проектов подходит Java
Делимся ресурсами для поиска и подборкой возможностей для студентов в IT, которыми можно воспользоваться прямо сейчас
MacOS
macOS (ранее Mac OS X, затем OS X) — это серия графических операционных систем, разрабатываемых и продаваемых компанией Apple с 2001 года. Это основная операционная система для компьютеров семейства Mac от Apple. На рынке настольных компьютеров, ноутбуков в течение многих лет она была второй по популярности операционной системой после Microsoft Windows. [1]
MacOS — вторая крупная серия операционных систем Macintosh. Первая серия называется «классическая» Mac OS, которая была представлена в 1984 году и последней версией которой стала Mac OS 9 в 1999 году. Mac OS X 10.0 была выпущена весной 2001 года. [2]
В 2012 году Apple сократила название до «OS X» и изменило его на «macOS» в 2016. Они приняли номенклатуру, которую они использовали для других своих операционных систем: iOS, watchOS and tvOS. Последняя версия — macOS Ventura, которая вышла в октябре 2022-го. [3]
Версии Mac OS X с 1999 по 2005 год могут работать только на компьютерах Apple на базе PowerPC того периода времени. Когда Apple объявила, что с 2006 года перейдет на процессоры Intel, была произведена и распространена отдельная версия Mac OS X 10.4 Tiger для первых компьютеров Mac на базе Intel; она включала эмулятор, известный как Rosetta, который позволял пользователям запускать большинство приложений PowerPC на компьютерах Mac OS X 10.5 Leopard на базе Intel.
Настольная версия Mac OS X 10.6 Snow Leopard была первой в мире, доступной только для компьютеров Mac на базе Intel. Apple выпустила Mac OS X 10.7 Lion в 2011 году, которая больше не поддерживает 32-разрядные процессоры Intel и также не использует Rosetta. Систему выпускали на 64-разрядных процессорах Intel, и они не поддерживаются приложениями PowerPC. Apple заявила, что с 2020 года новые компьютеры Mac будут иметь собственные процессоры на базе архитектуры ARM.
- 1 История
- 2 Версии macOS
- 2.1 Mac OS X 10.2 Jaguar
- 2.2 Mac OS X 10.3 Panther
- 2.3 Mac OS X 10.4 Tiger
- 2.4 Mac OS X 10.5 Leopard
- 2.5 Mac OS X 10.6 Snow Leopard
- 2.6 Mac OS X 10.7 Lion
- 2.7 Mac OS X 10.8 Mountain Lion
- 2.8 OS X 10.9 Mavericks
- 2.9 OS X 10.10 Yosemite
- 2.10 OS X 10.11 El Capitan
- 2.11 macOS 10.12 Sierra
- 2.12 macOS 10.13 High Sierra
- 2.13 macOS 10.14 Mojave
- 2.14 macOS 10.15 Catalina
- 2.15 macOS 11.0 BigSur
- 2.16 macOS 12.0 Monterey
- 2.17 macOS 13.0 Ventura
История
Mac OS X была создана на основе NeXTSTEP, которая в свою очередь основана на коде ядра Mach Университета Карнеги-Меллона и 4.4 BSD: бесплатной открытой версии Unix Университета Беркли. [4] Некоторые части FreeBSD и NetBSD также были включены в NeXTSTEP. Пока Джобс работал в NeXT, за пределами Apple, компания безуспешно пыталась создать систему «следующего поколения» с помощью проектов Taligent, Copland и Gershwin. [5]
NeXT (в то время называвшаяся OPENSTEP) была выбрана в качестве основы для будущей операционной системы Apple, и компания из Купертино полностью приобрела NeXT. Стивен Джобс вернулся в Apple на должность генерального директора, а позже стал сопровождать компанию. [6] Преобразование OPENSTEP в несвободную и более совершенный вид системы, которая будет адаптирована для основного рынка Apple: домашних пользователей и профессионалов в области мультимедиа. Проект изначально был известен как Rhapsody, а затем получил название Mac OS X. [7]
В сентябре 2000 года Apple выпустила публичную бета-версию, которая стоила 29,95 долларов и под названием Kodiak [8] . В этой версии появился стиль пользовательского интерфейса Aqua. Первой версией MacOS X 10.0 была система под названием Cheetah (рус. Гепард). Система была очень сырая, медлительная и исправления и выход обновлений делал систему еще более нестабильной в работе. Однако, в системе был уже был докбар, встроенный почтовый клиент, адресная книга, терминал.

Mac OS X 10.0 Beta
Версии macOS
Mac OS X 10.2 Jaguar
23 августа 2002 года выходит новая версия ОС: Mac OS X 10.2 Jaguar. [9] Система на момент выхода стоила 129 долларов. В новой системе была улучшена производительность и стабильность работы. Системные требования в новой ОС значительно выросли. Теперь она работала только на компьютерах PowerPC G3 и G4, требовалось минимум 128 Мб ОЗУ. В QuickTime появилась поддержка MPEG-4, появилась функция распознавания рукописного текста.

Установочный DVD Mac OS X Tiger
Mac OS X 10.3 Panther
24 октября 2003 года вышла новая версия — Mac OS X Panther. [10] В новой системе выросла производительность, а также был полностью переработан штатный файловый менеджер Finder, например, он мог извлекать и создавать zip-архивы не устанавливая дополнительное ПО. Также появилась возможность быстрого переключения пользователей , TextEdit научился работать с документами Microsoft Word, появился встроенный браузер Safari.
Mac OS X 10.4 Tiger
29 апреля 2005 года выходит Mac OS X 10.4 Tiger. Для установки требовалось не менее 256 Мб ОЗУ и 3 Гб свободного пространства на диске. В системе появились функции Spotlight, Dashboard, был серьезно переработан встроенный почтовый клиент, появилась новая версия браузера Safari, Quick Time, Voice Over, Xcode и других. Через несколько месяцев после выхода этой версии, Apple объявила о переходе на процессоры Intel.
Mac OS X 10.5 Leopard
26 октября 2007 года выходит Mac OS X Leopard. [11] Версия вышла намного позже чем ожидалось. Причиной была загруженность разработчиков другим проектом — iPhone. На сайта Apple был опубликован список новшеств, который состоял из 317 пунктов. Систему можно было установить только на PowerPC G4 или G5, а также на любой Mac на процессорах Intel. Минимальные системные требования были такие: 512 Мб оперативной памяти и 9 Гб места на диске. В новой системе появилась программа TIme Machine, которая автоматически делала резервное копирование данных с возможностью восстановления любой версии. Также в системе на Intel была встроена среда Boot Camp, которая позволяла установить Windows XP или Windows Vista и переключаться между этими системами.
Mac OS X 10.6 Snow Leopard
8 июня 2009 года выходит версия Mac OS X Snow Leopard. [12] Помимо поддержки Microsoft Exchange Server, был переписан с нуля Finder, а также улучшена производительность и стабильность системы. Также появился магазин приложений Mac App Store.
Mac OS X 10.7 Lion
20 октября 2010 года была представлена Mac OS X Lion. [13] Впервые, её можно было скачать через магазин приложений Mac App Store, стоимость составляла 29,99 долларов. Всего было заявлено 250 новшеств. Многие из них были взяты у iOS, например, полноэкранный режим приложений. В системе появились эмодзи, Launchpad, Misson Control. Исчез Adobe Flash Player.

Macbook Pro с системой Mac OS X Snow Leopard
Mac OS X 10.8 Mountain Lion
11 июня 2012 состоялась презентация OS X Mountain Lion. [14] Новую версию уже нельзя было купить на диске или флешке, она была доступна только для скачивания в App Store за 19,99 доллара. Из названия системы исчезло слово Mac. Из iOS пришли Game Center, iCloud и Центр уведомлений. Notes, Riminders стали отдельными приложениями. Система для установки требовала минимум 2Гб ОЗУ и 8Гб на диске. Всего за год было продано около 28 миллионов копий системы.
OS X 10.9 Mavericks
10 июня 2013 года объявили о выходе OS X Mavericks [15] . Начиная с этой системы, в названии фигурировали не дикие кошки, а географические объекты штата Калифорнии. 22 октября 2013 система была доступна для скачивания всем пользователям. Это первая версия системы, которая распространялась бесплатно. В системе появились новые приложения, которые пришли из iOS: iBooks и Apple Maps.
OS X 10.10 Yosemite

iMac G4 c системой 10.4 Tiger
2 июня 2014 года была представлена OS X Yosemite. [16] Внешне новая версия стала ближе к интерфейcу iOS. Был полностью переработан дизайн всего интерфейса. Впервые, все оформлением было лишено скевоморфизма. Но также у системы и были минусы. Были проблемы со стабильностью сети, также Finder иногда не видел файлов в папках. Но в целом, отзывы о системе были положительные.
OS X 10.11 El Capitan
8 июня была представлена OS X El Capitan. [17] Система стала более производительней и быстрее. В качестве системного шрифта стал использоваться San Francisco (до этого Helvetica Neue). В системе обновились все приложения, появился режим SplitView, а также важное обновление безопасности — SIP (System Integrity Protection, защита целостности операционной системы). Теперь нельзя, даже с правами root удалить или изменять файлы, которые принадлежать операционной системе.
macOS 10.12 Sierra
13 июня 2016 года представили новую систему — macOS Sierra. [18] Название сменилось с OS X на Mac. Теперь систему можно было разблокировать с помощью умных часов Apple Watch, появился буфер обмена, который синхронизировался между iOS и MacOS, Apple Pay (через Safari с подтверждением покупок на iPhone или на Apple Watch).
macOS 10.13 High Sierra
5 июня 2017 года была представлена MacOS High Sierra. [19] Теперь, на iPhone, iPad и на Mac была одинаковая файловая система. Из системы удалили утилиты командной строки FTP и telnet, появилась поддержка Messages в iCloud. В целом, изменений было не много. В основном была повышена стабильность работы системы.
macOS 10.14 Mojave
4 июня 2018 года была анонсирована система macOS Mojave. [20] В ней появилась возможность включить темную тему, а также это была последняя система, которая поддерживала 32-битные приложения. Добавились приложения из iOS — Новости, Акции, Диктофон и Дом, полностью обновилось приложение App Store.

MacOS Monterey
macOS 10.15 Catalina
3 июня 2019 вышла macOS Catalina. [21] В системе перестали работать 32-битные приложения, а также приложения, написанные в Carbon. Приложение iTunes разделилось на три приложения: Музыка, Подкасты и TV. Из системы удалили Dashboard, GNU Emacs. В терминале заменили язык командной строки с bash на zsh.
macOS 11.0 BigSur
22 июня 2020 года состоялась презентация macOS 11.0 Big Sur [22] . Впервые, за 19 лет изменился мажорный номер версии. Система получила совершенно новый дизайн. В интерфейсе появился Пункт Управления, такой же как в iOS и iPadOS. Появилась возможность запусть приложения для iOS и iPad, которые можно покупать в объединенном App Store.
macOS 12.0 Monterey
7 июня была презентована macOS 12.0 Monterey. [23] В системе появились универсальное управление, которое позволяет одной клавиатуре и мыши одновременно взаимодействовать с несколькими компьютерами Mac и iPad. Также появилась поддержка воспроизведения содержимого AirPlay, полученного с устройств iOS и iPadOS, а также с других компьютеров Mac.
macOS 13.0 Ventura
6 июня 2022 года была презентована macOS 13.0 Ventura [24] . Обновились приложения погода и часы, появился новый инструмент Stage Manager для организации окон на рабочем столе. Появились новые функции для видеоконференций, в том числе возможность использования iPhone в качестве веб-камеры.
Хакинтош

Обычный настольный компьютер с системой OS X 10.10 Yosemite
Хакинтош — персональный компьютер, который в плане железа отличается от устройств Apple, но на котором стоит операционная система macOS. Первые версии Хакинтоша появились после перехода устройств Apple на платформу x86 и процессоры компании Intel. [25] В настойщий момент установка системы возможна даже на процессоры AMD. Основная проблема при установке возникает с видеокартой и с периферийными устройствами, которые могут не работать, в особенности на ноутбуках. Начиная с версии 10.14 Mojave, Apple прекратила поддержку веб-драйверов NVIDIA и поэтому установка новых версий невозможна на чипсеты NVIDIA.
Пользовательское соглашение macOS напрямую запрещает установку системы на компьютеры сторонних производителей. При этом Apple не так активно противостоит Хакинтошу, в отличии от iOS-джейлбрейка.
В настоящий момент, сообщается об успешных попытках установки macOS Ventura на настольные компьютеры.
Примечания
- ↑Chrome OS вышла на второе место по популярности среди десктопных ОС(неопр.) . habr.com.
- ↑Какой была первая операционная система Mac?(рус.) . OS Today (5 апреля 2021).
- ↑Релиз macOS Ventura: FaceTime Handoff, Continuity Camera, Постановщик, новые приложения и другие изменения(неопр.) . www.comss.ru (25 октября 2022).
- ↑История операционных систем Apple. Часть 3. Поколение NeXT(рус.) . Хабр.
- ↑Lessons Learned: IT’s Biggest Project Failures(англ.). PCWorld.
- ↑Дарья Сидорова.Apple: история компании от самого начала до наших дней(рус.) . Rusbase.
- ↑Версии macOS по годам: история ОС для Mac(рус.)(неопр.)?. Яблык: технологии, природа, человек.
- ↑Редактор BORDER.Как менялась macOS. Эволюция операционной системы.(рус.)(неопр.)?. Технологии для людей (17 октября 2021).
- ↑День рождения классической операционной системы Mac OS X Jaguar — ровесницы Windows XP(рус.) . www.ferra.ru.
- ↑Десять лет Mac OS X: история развития — TEKKU(неопр.) . www.tekku.ru.
- ↑Выход новой операционной системы Mac OS X Leopard назначен на 26 октября 2007(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Компания Apple представляет Mac OS X Snow Leopard.(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Apple предварительно знакомит с новой операционной системой Mac OS X Lion(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Конференция WWDC 2012: Apple представляет новые MacBook, OS X и iOS(рус.) . iXBT.com.
- ↑mrDoc 17.04.2019.OS X Mavericks: десятая кошачья жизнь Apple(рус.)(неопр.)?. appleinsider.ru.
- ↑Apple представляет OS X Yosemite(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Apple представляет OS X El Capitan — улучшенная работа и повышенная производительность(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Юрий Андреев.Apple представила macOS Sierra, новые фишки и Siri на борту(неопр.) . iPhones.ru — Новости высоких технологий, обзоры смартфонов, презентации Apple (13 июня 2016).
- ↑macOS High Sierra представляет передовые технологии(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Apple представляет macOS Mojave(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑Apple представляет macOS Catalina(рус.)(неопр.)?. Apple Newsroom (Россия).
- ↑WWDC 2020: Apple представила macOS Big Sur с совершенно новым дизайном(рус.) . 3DNews — Daily Digital Digest.
- ↑macOS Monterey(рус.)(неопр.)?. Apple (Россия).
- ↑macOS Ventura(неопр.). Apple.
- ↑«Хакинтош»: как запустить Mac OS X на PC(рус.) . 3DNews — Daily Digital Digest.
- Eunice
- Interix
- MachTen
- Microsoft POSIX subsystem
- MKS Toolkit
- PASE
- PIPS
- Edos
- UNIX System Services
- UserLAnd Technologies
- Подсистема для приложений на базе UNIX
- WSL
Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело!
- Знание.Вики:Cite web (не указан язык)
- Знание.Вики:Cite web (неверный код языка)
- Знание.Вики:Страницы с ежедневно очищаемым кэшем
- Знание.Вики:Статьи без ссылки на Викисклад
- Программное обеспечение по алфавиту
- Технологии
- Все статьи
- MacOS
- Операционные системы на основе микроядер
- Apple
В чем разница ОС Linux и OS X (Mac)?
Будем считать, что вопрос от чайника, который всю жизнь работает на Windows, очень редко что-то делал в консоли под *nix (следуя туториалам, чтобы что-то настроить), поэтому я слабо представляю разницу. С OS X имею дело, но опять же используя только GUI.
Предположим я хочу лучше узнать мир консоли и в целом Linux, чтобы уметь настраивать окружение, устанавливать мои приложения на сервере и т.д., в общем минимальный набор того, что очень желательно знать разработчику бэкэнда (не сис.админу).
Вопрос таков: если OS X и Linux — это более-менее близкие родственники по своим корням, даже при наличии различий (которые имеются в т.ч. у каждого отдельного варианта Линукс), какие все-таки различия существуют между этими двумя системами?
Например: если я оставлю выбор на OS X, можно ли будет применить (наложить) знания команд и устройства системы, если передо мной окажется дистрибьютив линукс. Душа лежит к использованию макоси, но при этом цель, повторюсь, знать немного линукс, чтобы уметь настраивать окружение и т.д.
Или все-таки ОС Х это одно, а Линукс — это другое, и каждое нужно знать в отдельности. В таком случае я выберу Линукс, т.к. это важный пункт, который нужно (полезно) знать, ибо на нем работают http-сервера, БД, VPN, др. приложения + это плюс при приеме на работу. А знания Макоси это уже вопрос личных предпочтений, где самому удобнее работать (на данный момент я работаю по-большей части в Windows, но в ближайшее время хочу переехать, в связи с чем и родился данный вопрос).
Надеюсь меня поймут. Готов пояснить если что-то я написал неясно в вопросе. Спасибо.
upd: тем временем я немного гугли и нашел например следующее:
Need differentiate the points of views:
From the shell-users point of view here is no big differences. OS X is fully certified Unix operating system, so it’s command line is fully compliant with Unix standards and POSIX. You have terminal with shell, all shell commands (BSD style), you can install e.g. macports for GNU-versions of commands. e.g. the bundled sed is without —long argumnets, when you install macports you will get gsed — the GNU version. You have common directory structure as /bin /sbin /usr/bin .etc..
- Вопрос задан более трёх лет назад
- 40292 просмотра
1 комментарий
Оценить 1 комментарий