У меня есть проект в Swift, и когда я измеряю с помощью DYLD_PRINT_STATISTICS, я вижу 1,0 секунды перед инициализацией, где 70% - это связывание динамических библиотек.
Есть ли чистые и безопасные способы решения этой проблемы?
У меня есть проект в Swift, и когда я измеряю с помощью DYLD_PRINT_STATISTICS, я вижу 1,0 секунды перед инициализацией, где 70% - это связывание динамических библиотек.
Есть ли чистые и безопасные способы решения этой проблемы?
Согласно сессии Apple на WWDC 2016, посвященной оптимизации времени запуска приложения, независимо от их размер, имеющий большое количество динамически подключаемые библиотеки значительно замедляют запуск приложения.
Чтобы исправить это, несколько динамических библиотек можно объединить в одну библиотеку. Если они уже являются статическими библиотеками, то для их объединения можно использовать libtool с помощью команды из этот ТАК ответ. Однако если они не статичны, то для их объединения необходимо иметь доступ к их исходному коду. Если исходный код доступен, то будет достаточно буквального копирования кода из одной библиотеки в другую и использования полученной библиотеки.
Конечно, объединение разрозненных библиотек в одну определенно неудобно с точки зрения разработчика. Чтобы бороться с этим, Xcode позволяет связывать разные библиотеки, когда установлены разные флаги (например, RELEASE и DEBUG), как описано на этом форуме.
По возможности лучше объединять статические библиотеки, так как процесс объединения менее подвержен ошибкам. CocoaPods позволяет пользователям использовать статические библиотеки в своих проектах.