AppleInternal and some other stuff или разработка в Apple изнутри
Эту информацию я собирал примерно год, но она до сих пор актуальна (лето 2014). Я не сотрудник яблочной корпорации, но мне очень помогли некоторые люди, связанные с Apple. В статье я постараюсь рассказать о этапах разработки девайсов, внутреннем ПО и кое что еще.
Для статьи использую картинки только из открытых источников, но если гиктаймовцы поддержат меня, то во второй части покажу живые видео, сделанные мной.
iPhone
Apple к 2006 г. уже имела кое-как работающее ПО для айфона, а ближе к 2007 году — вполне юзабельное, но даже на самой презентации очень боялись, что айфон зависнет.
Первая диагностическая оболочка называлась SkankPhone и была предназначена для отладки железа.
«Рабочий стол» (он же SpringBoard) отсутствовал, т.к. в Apple пытались всеми силами сохранить тайну,
Начиная с iPhone 3G и 2.0 отладку производили при помощи SwitchBoard:
Но доступ к SkankPhone все еще оставался.
Тоже самое постигло и 3G [S], с той лишь разницей, что добавили новые возможности в прошивку (мое фото):
Думаю, вы все помните про тот самый забытый айфон в баре? Он работал как раз на такой прошивке, что стояла в iPhone 3G [S]. Почему так?
Сборка прошивок
Ранее я наивно полагал, что для каждого девайса в отдельности собирают прошивку. Оказалось, что ничего подобного.
Билдят «универсальную прошивку», в нашем случае прошивка 4.0 подходила всем устройствам сразу (т.е. внутренние прошивки содержат поддержку всех устройств).
Чтобы «сконфигурировать» ее под устройство используют PurpleBuildSanitizer (мое фото):
Bootchain компилируется, но работает между устройствами. Вы можете запустить bootchain от 4S на 4/3G [S] (но нужна небольшая магия).
Начиная с 5.0 (не с 4.3) iOS собирается только под ARMv7, начиная с iOS 7 — ARMv7s (отчего некоторые старые устройства ARMv7 (iPhone 4/4S и iPad 2/3) испытывали проблемы с быстродействием этой ОС.
Начиная с 7.0 также есть отдельная ветка сборки — для А7 и старше. Для них используется новый контейнер — img4.
iPad
Apple сама не очень надеялась на успех именно первого iPad, но начала активно разрабатывать его с 2009 года. К слову, именно тогда появился первый прототип работающий на диагностической ОС для iPhone 3G [S]:
Сам iPhone 4 очень близок к iPhone 3G [S], т.к. Джобса устраивала производительность 3G [S], новый чип А4 решили попробовать внедрить в iPad. Саму «четверку» начали делать как раз в 2009 году.
Стадии разработки устройства
Согласно дорожной карте, которую используют в Apple, появляется идея нового устройства. Рассмотрим на примере iPad 3. Все давно ждали ретину. Чтобы не проиграть в гонке, они были вынуждены срочно сделать The New iPad.
Этапы:
1. На отладочной плате появляется первый прототип, в качестве SoC — FPGA. Присутствует 4 UART, Ethernet, Com.
2. Если все более-менее успешно, то собирают плату для теста (чаще всего из частей, которые уже в производстве).
Появляется red board. В ней три разъема для LCD, есть отладочные выходы, JTAG (или похожее на него), а также обычный А5.
3. Apple тестирует red board без корпуса. Их не устраивает производительность — начинают производство А5Х.
4. Появляется первый прототип J1DVT-1, затем J1DEV. DEV — это почти конечный вариант, но с отключенной проверкой подписи прошивки.
Если такое устройство оставить в баре — есть вероятность, что знающие люди сделают дамп бутрома и появится bootrom уязвимость для SoC, что там установлен.
Диагностика железа и софта происходят в разных условиях. По сей день инженеры и сотрудники Foxconn используют для тестирования SwitchBoard, а в кампусе Apple — диагностическую версию iOS.
Тестирование и оптимизация системы
iPhone OS тестировалась на прототипе iPhone 2G
iPhone OS 2 тестировалась на iPhone 2G
iPhone OS 3 тестировалась на iPhone 3G/3G [S]
iOS 4 тестировалась на iPhone 4
iOS 5 тестировалась на iPhone 4S
iOS 6 тестировалась на iPhone 5
iOS 7 тестировалась на iPhone 5
iOS 8 тестировалась на iPhone 5S
Под словом «тестировалась» я подразумеваю оптимизацию (дабы эта модель не лагала).
Бить за орфографию, пунктуацию и синтаксис в ЛС.
В следующей статье (если интересно, конечно), я расскажу про низкоуровневую отладку, о разработке 4S и iphone 6, ПО для Mac OS, аккаунт сотрудника Apple и внутренний софт для iOS.