Connect with us

Исследования

Использование компанией Apple Swift и SwiftUI в iOS 17

Несмотря на отсутствие доступа к исходному коду iOS, мы можем определить языки программирования, используемые для создания встроенных приложений в iOS, и проследить эволюцию этих языков с iPhone OS 1.0 до iOS 17.

Фото аватара

Опубликовано

/

     
     

iOS 17 стала доступна и давайте проанализируем ее встроенные приложения, чтобы ответить на несколько вопросов. Сколько бинарных файлов содержится в iOS 17? Какие языки программирования используются для разработки этих приложений? Сколько приложений написано на Swift? Какова доля приложений, использующих SwiftUI по сравнению с UIKit?

Методология

Методология и инструменты для создания этой статьи были подробно описаны в моих предыдущих постах. Если вам интересно, пожалуйста, ознакомьтесь с ними.

Уточним несколько пунктов:

  • Я анализировал только то, что принято называть iOS, т.е. все, что выше ядра. Ядро XNU и низкоуровневые прошивки не учитываются. Обратите внимание, что в этом году я анализировал Secure Enclave.
  • Я считал фреймворки, расположенные внутри общего кэша dyld — механизма, появившегося в iPhone OS 3.1.
  • Следует помнить, что разработчик может смешивать различные языки программирования для создания одного двоичного файла. В качестве примера можно привести разработанное мной приложение для Mac — Dependencies, в котором я использую Swift, Objective-C, C++ и C — наиболее подходящий язык программирования для решения каждой конкретной задачи. В этой статье приложение, содержащее одну строку Swift-кода, будет считаться использующим Swift.
  • Вы увидите упоминания о Objective-C и C++, но, возможно, заметите отсутствие Objective-C++. Используемый здесь подход на самом деле не позволяет обнаружить бинарные файлы, созданные с использованием Objective-C++. Такие двоичные файлы считаются использующими и Objective-C, и C++.
  • Наконец, к данному анализу следует отнестись с долей сомнения. Хотя я считаю общую картину точной, мой подход имеет некоторые ограничения, поскольку я не имею доступа к исходному коду iOS и полагаюсь на неточные артефакты компиляции.

Количество бинарных файлов

Сначала ответим на простой вопрос — сколько бинарных файлов содержится в iOS 17? Количество файлов, составляющих iOS, продолжает расти: iOS 17 содержит 6030 файлов по сравнению с 5403 в iOS 16. Это 627 новых программ.

Использование компанией Apple Swift и SwiftUI в iOS 17

Swift и SwiftUI в iOS 17

Неудивительно, что в этом году значительно увеличилось количество приложений, использующих SwiftUI. Среди них можно отметить следующие:

  • Приложение Preferences с несколькими его пакетами (StorageSettingsUI, WallpaperSettings, MultitaskingAndGesturesSettings, ThirdPartyApplicationSettings, ActionButtonSettings, …)
  • Несколько двоичных файлов, связанных со здоровьем (Health.app, HealthUI, MentalHealthUI, WorkoutUI, …)
  • Приложение Home, которое, судя по всему, претерпело значительные изменения (Home.app, HomeEnergyUI, HomeUICommon, HomeDataModel, HomeAccessoryControlUI, …)
  • Поддержка новой кнопки Action (ActionButtonSettings, ActionButtonConfigurationUI, …)
  • Кроме того, ряд других важных приложений, таких как «Календарь» и «Напоминания», теперь используют SwiftUI.

В iOS 16 только 4 приложения использовали жизненный цикл приложений на основе SwiftUI. В iOS 17 эта цифра выросла до 14 приложений:

/Applications/Batteries.app/Batteries
/Applications/ClarityCamera.app/ClarityCamera
/Applications/ClarityPhotos.app/ClarityPhotos
/Applications/FinanceUIService.app/FinanceUIService
/Applications/FTMInternal-4.app/FTMInternal-4
/Applications/MusicRecognition.app/MusicRecognition
/Applications/PASViewService.app/PASViewService
/Applications/Preferences.app/Preferences
/Applications/SafetyMonitorApp.app/SafetyMonitorApp
/Applications/ShazamEventsApp.app/ShazamEventsApp
/Applications/WorkoutRemoteViewService.app/WorkoutRemoteViewService
/private/var/staged_system_apps/Weather.app/Weather
/System/Library/CoreServices/AegirProxyApp.app/AegirProxyApp
/System/Library/CoreServices/ShortcutsActions.app/ShortcutsActions

Продолжается рост принятия Swift и SwiftUI — в iOS 17 уже 385 двоичных файлов, использующих SwiftUI. Аналогичным образом, количество двоичных файлов, содержащих хотя бы одну строку Swift-кода, увеличилось на 50% по сравнению с iOS 16 и iOS 17:

Использование компанией Apple Swift и SwiftUI в iOS 17

Эволюция языков программирования

Анализируя все основные релизы iOS, начиная с iPhone OS 1.0 и заканчивая iOS 17, мы можем проследить эволюцию языков программирования, используемых в iOS. Еще раз отметим, что один бинарный файл может учитываться несколько раз, поэтому сумма файлов на этом графике больше, чем общее количество файлов:

Использование компанией Apple Swift и SwiftUI в iOS 17

Некоторые тенденции можно лучше представить с помощью процентного соотношения:

Использование компанией Apple Swift и SwiftUI в iOS 17

Что мы можем узнать из этих графиков?

  • Objective-C по-прежнему является основой iOS и прямо или косвенно используется в большинстве приложений
  • Внедрение Swift и SwiftUI продолжает быстро расти
  • Доля Objective-C, C и C++ продолжает снижаться.

UIKit против SwiftUI

До сих пор мы сравнивали SwiftUI со всеми двоичными файлами. Поскольку SwiftUI является фреймворком пользовательского интерфейса, было бы справедливее сравнивать его с другими двоичными файлами, отображающими некоторый пользовательский интерфейс. Нативные приложения для iOS могут быть построены с использованием двух различных UI-фреймворков: UIKit и SwiftUI (отметим, что возможно смешение обоих). Мой подход к подсчету количества двоичных файлов, содержащих пользовательский интерфейс, не идеален, но должен показать примерную тенденцию. Я просто проверяю, связываются ли исполняемые файлы с фреймворками UIKit или SwiftUI.

Впервые количество бинарных файлов, использующих исключительно UIKit, уменьшилось по сравнению с предыдущим годом:

Использование компанией Apple Swift и SwiftUI в iOS 17

Отображая процентное соотношение, мы можем подтвердить, что SwiftUI явно растет в собственных приложениях Apple:

Использование компанией Apple Swift и SwiftUI в iOS 17

Secure Enclave

Secure Enclave — это аппаратный компонент безопасности, изолированный от основного процессора и обеспечивающий дополнительный уровень защиты. Изначально он был представлен в iPhone 5S для обеспечения безопасности конфиденциальных пользовательских данных, играя важную роль в работе Touch ID, Face ID и Apple Pay.

В сессии «Что нового в Swift» на WWDC22 компания Apple заявила, что Swift теперь подходит для ограниченных сред, таких как процессор Secure Enclave.

В iOS 17 Secure Enclave содержит 19 двоичных файлов, и, к моему удивлению, ни один из них не использует Swift:

Использование компанией Apple Swift и SwiftUI в iOS 17

Так используется ли Swift в Secure Enclave? Да! Оказывается, двоичный файл hibernation в macOS Ventura использует Swift:

Использование компанией Apple Swift и SwiftUI в iOS 17

Заключение

Несмотря на отсутствие доступа к исходному коду iOS, мы можем определить языки программирования, используемые для создания встроенных приложений в iOS, и проследить эволюцию этих языков с iPhone OS 1.0 до iOS 17.

Принятие Swift и SwiftUI продолжает расти: количество двоичных файлов с использованием этих фреймворков увеличилось на 50% с iOS 16 по iOS 17. Еще одним хорошим признаком развития является более широкое использование SwiftUI в жизненном цикле приложений. Также впервые по сравнению с предыдущим годом уменьшилось количество бинарных файлов, использующих исключительно UIKit.

В ближайшие годы будет интересно понаблюдать за тем, начнет ли Swift распространяться в низкоуровневых микропрограммах, таких как Secure Enclave. В настоящее время Swift отсутствует в Secure Enclave в iOS, хотя в macOS он используется.

Как уже говорилось, такой подход имеет очевидные ограничения, и хотя я считаю общую картину точной, я не могу гарантировать, что результаты будут абсолютно точными. Если вы считаете, что я что-то упустил, пожалуйста, свяжитесь со мной на Mastodon @timac@mastodon.social.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: