Главной темой презентации, которая открыла конференцию WWDC 2018, остается iOS 12, и о ее особенностях и возможностях СМИ из разных уголков мира точно будут говорить до iOS 13 на WWDC 2019.
Назвать iOS 12 сверхинновационной язык не поворачивается. Это большое, но все-таки эволюционное обновление мобильной операционной системы Apple. Тем не менее, она все-таки получила достаточно новых возможностей, и мы выделили 12 наиболее полезных для каждого из нас.
1. Пункт управления и Многозадачность раздельно на iPad
С выходом iOS 11 Apple начала разделение операционной системы для iPhone и iPad. Последний давно позиционируется как сверхмобильный инструмент для решения рабочих задач в стесненных условиях, и в прошлом году компания начала подтверждать это не только громкими слоганами, но и программным обеспечением.
Тем не менее, лично мне планшетная версия iOS 11 показалась слишком громоздкой и временами даже неуклюжей.
Чего только стоит общее меню Пункта управления и Многозадачности, в которое уместили и ярлыки для быстрого управления главными возможностями iPad, и переключение между последними запущенными приложениями.
Похоже, спустя год в Apple поняли свою ошибку, поэтому в iOS 12 компания решила разделить эти два раздела. Теперь на iPad, как и на iPhone, Пункт управления и Многозадачность - это два отдельных меню, которые особенно удобно использовать, держа планшет навесу .
Но я не думаю, что пользователи Smart Keyboard, который превращает iPad Pro в печатную машинку, будут разочарованы таким положением дел. Нет, Пункт управления используется реже Многозадачности, поэтому расположение последнего на весь экран будет удобно и для них.
2. Удобные жесты от iPhone X для всей линейки iPad
iOS 11 на iPhone X сильно отличается от операционной системы на других устройствах не только внешне, но и по способу управления.
Так как юбилейный смартфон лишился кнопки Домой, компания заменила ее использование целым набором удобных жестов для вызова Многозадачности, перехода к Пункту управления и быстрого перехода между последними приложениями - все это из 10-ки переезжает на все iPad.
Например, Пункт управления теперь запускается свайпом от правой части верхнего края экрана вниз, Многозадачность вылезает после специфического жеста от нижнего края экрана вверх, а переключаться между последними приложениями можно круговым свайпом в нижней части экрана.
В принципе, раньше все эти же возможности можно было использовать с помощью многопальцевых жестов, но они были не так удобны как новые.
3. iOS 12 отлично работает даже на старинном iPhone 5s
iOS 11 справедливо считают одной из самых медленных и нестабильных версий среди всех мобильных ОС Apple. Мы начали тестировать ее сразу после WWDC 2017, и даже после выхода финальной версии многие проблемы бет остались.
Ситуацию немного исправили только с выходом iOS 11.2 и iOS 11.3, но даже iOS 11.4 не работала действительно хорошо. Именно поэтому в сравнениях с Android совершенную в прошлом операционную систему стали называть настоящим тормозом.
Задолго до WWDC 2018 в сети появились слухи, что в Apple решили отложить до iOS 13 большинство запланированных для iOS 12 возможностей и сосредоточиться на скорости и стабильности. Похоже, компании это удалось.
Мы уже убедились, что iOS 12 beta 1 уже отлично работает даже на iPhone 5s, а это только первая тестовая версия. Сложно представить, каким качеством работы она будет удивлять нас после релиза .
4. Самый умный Центр уведомлений, который был в iOS
Когда Apple украла Центр уведомлений из Android для iOS, мы обрадовались возможности быстро просматривать все новые сообщения из социальных сетей и мессенджеров, напоминания и другие входящие в одном месте.
Тем не менее, за несколько последних лет количество уведомлений ощутимо выросло, а это меню в мобильной ОС практически не изменилось. Оно превратилось в настоящую свалку из десятков входящих, которую в последнее время использовать было практически невозможно.
Что интересно, Android в этом плане меняют чуть ли не в каждой версии. Например, Центр уведомлений в нем поддерживает группировку по приложениям уже не первый год, и все это время мы облизываемся на эту фишку конкурентной ОС.
Но все меняется. В iOS 12 переработали Центр уведомлений, который получил не только группировку входящих по приложениям, но и возможность быстрого управления без перехода в Настройки .
Например, ты можешь отключить уведомления прямо с экрана блокировки или выключить звук их приема.
5. Экранное время, которое позволит контролировать себя
Если честно, иногда у меня создается впечатление, что есть программисты, которые одновременно работают и над Android, и над iOS. Ничем другим я не могу объяснить практически одновременное появление почти одинаковых новых возможностей сразу в двух ОС.
Одной из таких стал контроль времени использования конкретных приложений и устройства в целом. С помощью него ты можешь установить количество часов или минут, которое хочешь тратить на бессмысленное листание ленты Instagram или чтение Twitter.
Многие сразу отнеслись к этой возможности скептически. Они подчеркнули, что и без того держат себя в руках, а эта проблема актуальна только на загнивающем Западе. Но я не согласен.
Если честно, не раз намертво залипал в том же YouTube, когда уже горели все дед-лайны по работе. В большом объеме задач и малом количестве сна мозг решал просто переключиться, и такой вот «будильник» оказался бы кстати .
Более того, эта функция дает возможность контролировать не только себя, но и своих детей. Ты сможешь удаленно выставить количество часов, которые твое чадо будет играть на iPad, после чего оно получит уведомление, что пора закругляться и блок приложения. Это очень круто!
6. Большое обновление Анимодзи для iPhone X и не только
Многие относятся к Анимодзи скептически, а я очень сильно жалею, что Apple не добавила их поддержку на устройства без True Depth и чувствую себя обделенным. Они - уже часть поп-культуры, и спорить с этим бессмысленно.
Во-первых , в iOS 12 их количество увеличилось: добавили динозавра, привидение, тигренка и коалу.
Во-вторых , возможность научилась понимать открытый рот, различать и копировать высунутый язык. Баловство, но очень потешное.
В-третьих , появились Мемодзи. Это такие Анимодзи, но не просто животных, а самого себя. У тебя есть возможность создать одну или несколько своих аватарок, которые можно будет использовать для записи видео и не только.
7. Переработанный движок дополненной реальности ARKit 2.0
Мне кажется, что дополненную реальность будут максимально активно использовать именно тогда, когда появится удобное устройство для этого. Назвать iPhone или iPad такими нельзя даже с большой натяжкой - нужны Apple Glass или что-то подобное.
Тем не менее, движок дополненной реальности Apple ARKit активно развивается и уже добрался до версии 2.0. Он научился работать с объемом , и компания продемонстрировала основные его возможности с помощью встроенного в iOS 12 приложения под названием Measure.
Это такой виртуальный измерительный прибор, который уже сегодня отличается неплохой точностью, сравнимой с традиционными инструментами.
Но простор для развития дополненной реальности чуть ли не бесконечный. Особенно интересно увидеть скачок в этом направлении в играх.
8. Обновленное приложение Фото, которое теперь удобнее
Приложение Фото становится все более и более интересным с самых разных точек зрения. Оно уже начинает казаться мне реальным конкурентом для Google Фотографий, хотя ранее я считал абсолютно иначе. Чем оно интересно в iOS 12?
Во-первых , альбомы в приложении Фото переосмыслили. Теперь твои будут отображаться в две строчки с горизонтальной прокруткой. Теперь созданных приложениями не видно, а все остальное расположено ближе. Прелесть!
Во-вторых , Apple поставила на поисковую систему и машинное обучение, которое позволяет находить фотографии не просто по ключевым словам, но и по контексту. Это здорово!
В-третьих , теперь очень удобно делиться фотографиями с совместных поездок вместе с друзьями. Можно отправить им снимки через iCloud, и они тут же получат просьбу отправить свои с этой же локации в ответ.
9. Переработанный режим Не беспокоить с геолокацией
Здорово, что Apple решила продолжить развитие возможности Не беспокоить. Ранее у тебя было всего 2 пути: включать ее вручную через Пункт управления или автоматически по времени через Настройки.
Но в iOS 12 инструмент получил дополнительные фишки. Например, теперь блокировку приложений можно отключать после изменения геолокации . Это здорово, когда ты на совещании, выходишь из помещения и сразу начинаешь получать уведомления.
Что еще интересно, отключать Не беспокоить теперь также можно при завершении конкретного мероприятия из Календаря. Это также очень удобно.
Единственное, что плохо - в данном случае речь идет только о стандартных приложениях iOS. Дополнительные из App Store пока таким образом нельзя, и это вряд ли изменится.
10. Классное новое приложение Диктофон, прямо огонь
Диктофон стал более понятным, а также появился на iPad. Раньше пользоваться им было неприятно, теперь у нас от него прямо противоположные впечатления.
11. Ярлыки для Siri, которые запилили на базе Workflow
В начале 2017 года Apple с потрохами купила приложение Workflow. Это инструмент для автоматизации, создания сценариев для последовательного выполнения заданных функций. И ранее модераторы App Store называли его лучшим с точки зрения дизайна и функционального наполнения.
До недавнего времени мы даже не подозревали, что в Apple планируют делать с интересным приобретением, но уже сегодня все стало на свои места. Оно становится базой для ярлыков Siri, которые помогут активировать свои сценарии голосовыми командами.
С iOS 12 ты сможешь умно объединить все ежедневные задачи , которые касаются не только встроенного, но и стороннего софта в сценарии и активировать их голосом. Пока это практически не работает, но звучит здорово.
Например, если ты заезжаешь за кофе по дороге на работу каждый день, Siri поможет тебе быстро и заранее заказать его.
12. 32 пользователя в групповом FaceTime одновременно
В iOS 12 FaceTime научился работать с групповыми звонками аудио и видео. Теперь через интернет одновременно могут общаться не 2 или 8, а целых 32 человека. Думаю, будем активно этим пользоваться.
А в сумме новая версия операционной системы уже работает отлично. Я использую его на основном iPhone и пока не планирую переходить обратно на iOS 11.
С позиции пользователя, iOS - выдающаяся платформа. Возможно, несколько монотонная и жёсткая, но привлекательная и надёжная (в основном).
С позиции разработчика дела обстоят совсем иначе. Работать с iOS (а на самом деле, вообще, с Apple) - всё равно, что пытаться разговаривать с параноидальным роботом, действующим как известный советский пограничник из романа Кафки.
Safari для iOS - полный отстой
Он является одним из самых отвратительных браузеров, с которыми я имел дело с тех пор, как начал заниматься веб-разработкой в конце 90-х. Я потерял счёт костылям, которые пришлось поставить, чтобы заставить программы работать в Safari для iOS или в её веб-представлениях. Это просто неприемлемо в мире 2016 года, где всё подчиняется стандартам.Чтобы дать вам представление: вы не можете, например, задать высоту элемента
Ситуация, действительно, удивляет. Почему Apple не позволяет другим браузерным движкам работать в iOS? Или почему Apple не вкладывает больше ресурсов в проект Webkit, как это делает Google со своим Chromium?
Нола Лоусон: это потому, что они имеют намного больше инженеров и энтузиастов своего дела среди разработчиков, чем Apple.
Невозможно (легко) протестировать старые версии iOS
Однажды мне понадобилось протестировать симулятор с iOS 7. Догадайтесь, что произошло. Выяснилось, что это, конечно, возможно , но потребуется загрузить старую и неподдерживаемую версию Xcode, которая работает только в Mavericks !То есть, вы должны хранить либо старые Маки, либо старые iOS-устройства, молясь, чтобы Apple не сломала что-либо дальше.
Политика Apple - пленных не брать. Если вы не обновляете ваше устройство, то вы - «нежелательная» персона. Покупайте новое iOS-устройство, если желаете быть «привилегированной» персоной, получающей приложения без багов.
Сертификаты и профили инициализации
Операции с сертификатами iOS являются делом утомительным, забюрократизированным и трудным для понимания. Иногда что-то рушится, и тогда ни документация Apple, ни Xcode, ни этот кошмарный Member Center не могут пролить хоть какой-то свет на то, что же всё-таки происходит.Совсем недавно я потерял 2 дня, пытаясь выяснить, почему я не могу создать определённый сертификат, и, наконец, нашёл ответ. Кто бы мог подумать - в каких-то малоизвестных документах по Mozilla. Xcode выдал мне только выделенную серым кнопку, а на форуме разработчиков Apple не отозвался вообще никто.
Не должно быть так, чтобы вы, будучи разработчиком, спрашивали разрешения у Apple на запуск вашей собственной программы на вашем собственном устройстве. Вы знаете, что так обстоит дело почти на любой другой платформе в мире. Даже у macOS.
iOS AppStore
AppStore - ещё один, огромный, источник раздражения. Например, всего несколько часов назад приложение, над которым я работаю, было отклонено, потому что кому-то в Apple не понравились мои скриншоты:Мы отмечаем, что ваш(и) скриншот(ы) недостаточно показывает(ют) ваше приложение в действии.
Я, понятно, загрузил скриншоты работающего приложения без каких-либо изменений.
Если Apple считает, что скриншотов должно быть больше или что они выглядят как-то неприглядно, то почему бы так и не написать? Нет, вы не заслуживаете ничего больше, чем автоматизированный ответ.
Кстати, компании требуется неделя, чтобы сообщить, нравятся ли ей ваши скриншоты. Желаем успеха в попытках спланировать стратегию скоординированного выхода…
Помните робота из фантастического боевика «Элизиум - рай не на Земле»?
«Вы желаете говорить с человеком?»
К счастью, я могу просто продолжать загружать скриншоты и надеяться, что приложение будет принято в какой-то момент. Просто теряя время.
Но изложенное выше не так плохо, как то, что произошло сегодня у меня с приложением Dash iOS . Apple решил, что разработчик успешного приложения причастен к мошенничеству с обзорами и закрыл это приложение.
Решение Apple окончательное и не может быть обжаловано.
Конечно, все мы знаем, что компания Apple - безупречная и что она никогда не делает ошибок. Как можно сомневаться в этом?
Хуже всего
Вы должны платить за честь быть разработчиком iOS. Недостаточно того, что Apple заставляет вас компилировать на, фактически не стоящем своих денег, компьютере Apple или что вы должны терпеть все эти проблемы.Когда-нибудь Apple сделает программу разработчиков iOS бесплатной для всех, под всеобщие рукоплескания. Фанаты будут вопить от восторга. Как же, такой шикарный жест!
И в то же время можно бесплатно вести разработку на почти любой другой платформе в мире и даже компилировать с любой другой платформы. Как, например, возможна компиляция приложений для Windows на macOS, или приложений для Android на Linux.
Из-за того, что в iPhone X отсутствует кнопка «Домой» и сканер отпечатков пальцев, полностью поменялась концепция управления смартфоном. Появились специальные жесты, поменялись привычные комбинации клавиш, да и iOS 11 на «десятке» воспринимается как что-то новое.
Кнопка «Домой» использовалась в смартфонах Apple на протяжении 10 лет и в iPhone X от нее отказались, теперь по всей системе можно пользоваться специальными жестами. Благодаря им полностью меняется впечатление от управления смартфоном.
Как разблокировать iPhone X?
Для разблокировки смартфона, необходимо посмотреть на него и смархуть вверх от нижнего края экрана блокировки. Чтобы значительно ускорить процесс разблокировки, можно сначала сделать свайп снизу вверх и только после этого разблокировать устройство.
Как свернуть приложение?
Чтобы свернуть приложение, необходимо смахнуть от нижнего края дисплея вверх. К этому жесту надо привыкать, спустя 30 минут использования смартфоном ты на это не обращаешь внимание. Когда в руки берешь прошлогоднюю модель iPhone, то на подсознательном уровне используешь этот жест, вот так к нему быстро привыкаешь.
Как запустить многозадачность?
Чтобы посмотреть запущенные приложения, необходимо провести от нижнего края дисплея и удерживать палец. Появляется «карусель» с миниатюрами запущенных приложений.
Как закрыть приложение?
Было логичнее, если сделать свайп по пиктограмме вверх и приложение закрывается, но это работает не так. Закрыть приложение можно несколькими способами:
- Необходимо удерживать пелен в течение нескольких секунд на миниатюре приложения, затем в левом верхнем углу появляется красный круг и только после этого можно смахнуть его вверх, чтобы закрыть Также закрыть запущенные приложения можно, если ткнуть на красный круг
Может показать, что это слишком сложно, но это не так. Первое время ты путаешься в своих действиях, но со времен привыкаешь и начинаешь понимать логику системы.
Как быстро переключаться между приложениями?
Чтобы быстро переключаться между запущенными приложениями, необходимо сделать свайп по нижней части экрана. Нет вообще никакой задержки, все происходит очень быстро вне зависимости от того, сколько запущенно приложений. И это самая удобная реализация, нечто подобное используется на iPad: там необходимо сделать смахивание тремя пальцами по дисплею.
Комбинации клавиш:
Как запустить центр управления?
Для открытия центра управления, необходимо смахнуть вниз от правого верхнего угла смартфона. Стоит отметить, что в левом верхнем углу отображается только время, а в правом - антена уровня сигнала сети и Wi-Fi, а также иконка аккумулятора. Обратите внимание, что на иконке не отображаются проценты. В настройках их не включить, единственный способ посмотреть точное количество процентов в аккумуляторе - это запустить центр управления.
Как посмотреть пропущенные уведомления?
Чтобы посмотреть все пропущенные уведомления, необходимо смахнуть вниз от верхнего или левого края дисплея.
Как запустить Siri?
- Голосовой командой - «Привет, Siri» Нажать и удерживать кнопку питания
Как запустить Apple Pay?
Для запуска платежной системы Apple Pay необходимо два раза нажать на кнопку питания, далее посмотреть на смартфон и оплатить покупки.
Как выключить iPhone X?
Выключить смартфон можно несколькими способами:
- Необходимо нажать и удерживать клавишу питания и одну из кнопок громкости Зайти в приложение «Настройки», найти пункт «Основные» и пролистать список в конец списка, далее необходимо нажать на кнопку «Выключить»
Как сделать скриншот?
Чтобы сделать скриншот, необходимо одновременно нажать на клавишу питания и кнопку увеличения громкости.
Включение виртуальной кнопки «Домой»
Если вы привыкли к физической кнопке «Домой», то можете создать ее виртуальный аналог. Для этого необходимо зайти в приложение «Настройки», тут найти пункт «Основные», далее «Универсальный доступ». Активируем функцию AssistiveTouch и настраиваем ее: оставляем один пункт «Домой», далее ставим непрозрачность на 25% и перемещаем ее вниз.
Интересные лайфхаки с FaceID
Функция FaceID является эксклюзивной функцией iPhone X и служит для распознавания лица. Но компания Apple любит уделять внимать внимание на различные мелочи:
- Если посмотреть на смартфон во время проигрывания будильника, то автоматчики уменьшится громкость Таким же образом убавляется громкость входящего звонка
Из всего этого видно, система управления iPhone X полностью изменилась благодаря специальным жестам и комбинациям клавиш. В них нет ничего сложного, они максимальны интуитивны и к ним довольно быстро привыкаешь.
На конференции WWDC 2018 компания Apple представила новую версию операционной системы iOS. Двенадцатое обновление получило несколько важных нововведений.
Производительность
На мероприятии было заявлено, что iOS 12 работает в два раза быстрее предыдущей версии. Некоторые озвученные показатели: приложения запускаются на 40% быстрее, клавиатура на 50% более отзывчива, а камера снимает на 70% быстрее.
Дополненная реальность
Компания Apple совместно с Pixar разработала единый формат для контента в . Он объединяет все необходимые компоненты в один сжатый файл. Для разработчиков будут доступны дополнительные инструменты от Adobe специально для работы с дополненной реальностью.
Apple выпустит специальное приложение с использованием дополненной реальности - Measure. Оно работает как виртуальная линейка для измерения реальных объектов с помощью камеры.
Сторонние разработчики смогут встраивать элементы дополненной реальности в свои приложения и даже сайты с поддержкой Safari.
Инструмент ARKit 2 позволит создавать игры с дополненной реальностью для двух и более игроков.
Фото
Приложение для просмотра фотографий получило улучшенный поиск с различными параметрами. Система ищет именно то, что запечатлено на фотографии.
Siri
Голосовой помощник Siri получил поддержку программных шорткатов. Шорткат - часто вызываемое вами действие, которое можно назначить на голосовую команду. Например, слова «Siri, я потерял ключи» можно назначить на поиск ключей с аксессуаром для определения местоположения.
В специальном каталоге пользователи смогут делиться своими шорткатами. Настройка шортката довольно проста и всегда зависит от приложения. Подаваемые на вход данные каждый раз могут быть новыми, например местоположение или проигрываемая песня.
Цифровое здоровье
Компания Apple подсмотрела у Google некоторые . Одна из них - «цифровое здоровье». Пользователи iOS 12 смогут настраивать режим «Не беспокоить» для блокировки уведомлений, а также они по умолчанию не будут приходить в ночное время.
iOS 12 ведёт полную статистику по использованию устройства. В специальном разделе пользователь сможет посмотреть, сколько времени он уделяет тем или иным программам. На каждое приложение можно завести лимит использования по времени. Также есть функция ограничения использования устройства для детей.
Группировка уведомлений
Наконец-то iOS научилась группировать уведомления из одного приложения. Развернуть группу уведомлений можно знакомым по Android свайпом вниз.
Memoji
Пользователи iPhone X теперь могут не только отправлять анимированные эмодзи, но и создавать свой аватар. Поддерживается распознавание языка.
Редактор позволяет сделать узнаваемую версию себя.
Групповые звонки FaceTime
В FaceTime могут участвовать до 32 человек одновременно. Интерфейс построен по принципу плиток разного размера, между которыми можно переключаться вручную или в зависимости от того, кто разговаривает в данный момент.
Для всех участников видеоконференции можно подключить их аватары Memoji. Работает на Mac, iPhone, iPad и даже Apple Watch.
iOS 12 будет доступна на всех устройствах, которые обновились до iOS 11:
- iPhone X;
- iPhone 8 / iPhone 8 Plus;
- iPhone 7 / iPhone 7 Plus;
- iPhone 6s / iPhone 6s Plus;
- iPhone 6 / iPhone 6 Plus;
- iPhone SE;
- iPhone 5s;
- iPod touch 6;
- iPad Pro 12,9 обоих поколений;
- iPad Pro 10,5;
- iPad Pro 9,7;
- iPad Air / iPad Air 2;
- iPad 5 / iPad 6;
- iPad mini 2 / 3 / 4.
Бета-версия iOS 12 доступна для разработчиков уже сейчас. Стабильный релиз состоится осенью 2018 года.
Все в курсе, что мобильные девайсы 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, конечная цель которых - не загрузить ОС, а перевести смартфон в режим обновления.
Значение слова неудачный
Обзор Samsung Galaxy A7 (2017): не боится воды и экономии Стоит ли покупать samsung a7
Делаем бэкап прошивки на андроиде
Как настроить файл подкачки?
Установка режима совместимости в Windows