Connect with us

Разработка

Использование Apple Swift и SwiftUI в iOS 18

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

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

/

     
     

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

Методология

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

Прежде чем перейти к деталям, давайте проясним несколько моментов:

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

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

Давайте сначала ответим на простой вопрос — сколько бинарных файлов содержится в iOS 18? Количество файлов, составляющих iOS, продолжает расти: iOS 18 содержит 6800 бинарных файлов, по сравнению с 6030 в iOS 17. Это 770 новых файлов.

Использование Apple Swift и SwiftUI в iOS 18

Swift и SwiftUI в iOS 18

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

Новые технологии также опираются на Swift, например:

  • Apple Intelligence с фреймворками ProactiveSummarization и SummarizationKit
  • PrivateCloudCompute для Apple Intelligence, которая включает некоторые компоненты с открытым исходным кодом
  • MarketplaceKit для создания альтернативных магазинов приложений
  • LimitedLibraryPickerViewService для доступа к контактным данным человека

Кроме того, несколько других приложений и фреймворков теперь используют Swift, например, приложение Camera и BarcodeScanner, а также такие фреймворки, как CoreML, CoreNFC, CoreGraphics, CoreText, LinkPresentation и DoNotDisturb.

iOS 18 теперь содержит 592 бинарных файла, использующих SwiftUI, а количество бинарных файлов, содержащих хотя бы одну строку кода Swift, увеличилось на 50% по сравнению с iOS 17 и iOS 18:

Использование Apple Swift и SwiftUI в iOS 18

В iOS 16 только 4 приложения использовали жизненный цикл приложений на базе SwiftUI, а в iOS 17 их число выросло до 14. В iOS 18 жизненный цикл приложений на базе SwiftUI теперь используют 19 приложений:

/Applications/Batteries.app/Batteries
/Applications/ClarityCamera.app/ClarityCamera
/Applications/ClarityPhotos.app/ClarityPhotos
/Applications/FinanceUIService.app/FinanceUIService
/Applications/FTMInternal-4.app/FTMInternal-4
/Applications/GAXApp.app/GAXApp
/Applications/LimitedAccessPromptView.app/LimitedAccessPromptView
/Applications/MusicRecognition.app/MusicRecognition
/Applications/PASViewService.app/PASViewService
/Applications/Preferences.app/Preferences
/Applications/Print Center.app/Print Center
/Applications/ProductKitViewer.app/ProductKitViewer
/Applications/SafetyMonitorApp.app/SafetyMonitorApp
/Applications/ShazamEventsApp.app/ShazamEventsApp
/private/var/staged_system_apps/Calculator.app/Calculator
/private/var/staged_system_apps/Passwords.app/Passwords
/private/var/staged_system_apps/Weather.app/Weather
/System/Library/CoreServices/AegirProxyApp.app/AegirProxyApp
/System/Library/CoreServices/ShortcutsActions.app/ShortcutsActions

В iOS 18 появились новые приложения, использующие жизненный цикл приложений на основе SwiftUI:

  • Calculator
  • Passwords
  • Print Center
  • GAXApp связанное с фичей Guided Access
  • LimitedAccessPromptView для доступа к контактным данным человека
  • ProductKitViewer

Использование Apple Swift и SwiftUI в iOS 18

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

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

Использование Apple Swift и SwiftUI в iOS 18

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

Использование Apple Swift и SwiftUI в iOS 18

UIKit против SwiftUI

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

В iOS 18 количество приложений, использующих UIKit, выросло всего на 8%, в то время как количество приложений, использующих SwiftUI, выросло более чем на 50%:

Использование Apple Swift и SwiftUI в iOS 18

Мы можем четко проследить эту тенденцию с помощью процентных соотношений:

Использование Apple Swift и SwiftUI в iOS 18

Интересно отметить, что в iOS 18 появился новый фреймворк SwiftUICore, который используется в UIKitCore (и косвенно в UIKit). Вероятно, это было сделано для того, чтобы помочь интегрировать низкоуровневый код SwiftUI с UIKit.

Расширенная функция BlastDoor

В iOS 14 появилась новая функция безопасности под названием BlastDoor, призванная помочь защитить систему путем изоляции недоверенных данных, поступающих через Messages и Apple Identity Services (IDS).

iOS 18, похоже, BlastDoor расширили, чтобы помочь предотвратить атаки из большего количества источников:

/System/Library/PrivateFrameworks/BlastDoor.framework/BlastDoor
/System/Library/PrivateFrameworks/BlastDoor.framework/Resources/BlastDoorPosterArchiveBridging.bundle/BlastDoorPosterArchiveBridging (NEW)
/System/Library/PrivateFrameworks/CTBlastDoorSupport.framework/CTBlastDoorSupport (NEW)
/System/Library/PrivateFrameworks/IDSBlastDoorSupport.framework/IDSBlastDoorSupport
/System/Library/PrivateFrameworks/IDSBlastDoorSupport.framework/XPCServices/IDSBlastDoorService.xpc/IDSBlastDoorService
/System/Library/PrivateFrameworks/MediaAnalysisBlastDoorSupport.framework/MediaAnalysisBlastDoorSupport (NEW)
/System/Library/PrivateFrameworks/MediaAnalysisBlastDoorSupport.framework/XPCServices/MediaAnalysisBlastDoorService.xpc/MediaAnalysisBlastDoorService (NEW)
/System/Library/PrivateFrameworks/MessagesBlastDoorSupport.framework/MessagesBlastDoorSupport
/System/Library/PrivateFrameworks/MessagesBlastDoorSupport.framework/XPCServices/MessagesAirlockService.xpc/MessagesAirlockService
/System/Library/PrivateFrameworks/MessagesBlastDoorSupport.framework/XPCServices/MessagesBlastDoorService.xpc/MessagesBlastDoorService
/System/Library/PrivateFrameworks/TelephonyBlastDoorSupport.framework/TelephonyBlastDoorSupport (NEW)
/System/Library/PrivateFrameworks/TelephonyBlastDoorSupport.framework/XPCServices/TelephonyBlastDoorService.xpc/TelephonyBlastDoorService (NEW)

На момент написания этой статьи документация по безопасности платформы Apple еще не была обновлена для iOS 18, но мне не терпится узнать больше об этих новых функциях безопасности.

Secure Enclave

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

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

Secure Enclave в iOS 17 и iOS 18 содержит одинаковое количество файлов. К моему удивлению, двоичный файл dxio был переименован в dxio_swift. Однако краткий анализ этого двоичного файла не выявил типичных артефактов Swift. Это можно объяснить использованием специализированного компилятора Swift со специальными оптимизациями. Пока не будет проведен более детальный анализ, я буду считать, что этот двоичный файл использует Swift:

Использование Apple Swift и SwiftUI в iOS 18

Необработанные данные

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

Version Device Raw Data
iOS 18.0 (22A3354) iPhone 15 Pro iOS18.txt
iOS 17.0.2 (21A350) iPhone 15 Pro iOS17.txt
iOS 16.0.2 (20A380) iPhone 14 Pro iOS16.txt
iOS 15.0 (19A346) iPhone 13 Pro iOS15.txt
iOS 14.0 (18A373) iPhone X iOS14.txt
iOS 13.1 (17A844) iPhone X iOS13.txt
iOS 12.0 (16A366) iPhone X iOS12.txt
iOS 11.1 (15B93) iPhone X iOS11.txt
iOS 10.1 (14B72) iPhone 5s iOS10.txt
iOS 9.0 (13A344) iPhone 5s iOS9.txt
iOS 8.0 (12A365) iPhone 5s iOS8.txt
iOS 7.0.1 (11A470a) iPhone 5s iOS7.txt
iOS 6.0 (10A403) iPhone 3GS iOS6.txt
iOS 5.0 (9A334) iPhone 3GS iOS5.txt
iOS 4.0 (8A293) iPhone 3GS iOS4.txt
iPhone OS 3.0 (7A341) iPhone 3GS iOS3.txt
iPhone OS 2.0 (5A347) iPhone 2G iOS2.txt
iPhone OS 1.0 (1A543a) iPhone 2G iOS1.txt

Заключение

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

Неудивительно, что в этом году количество приложений, использующих Swift и SwiftUI, продолжило расти. В iOS 18, похоже, Apple также начинает или планирует использовать Swift на низком уровне в Secure Enclave.

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

Дополнительно

Источник

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

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

LEGALBET

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

Telegram

Популярное

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

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