В чем разница между библиотеками `* .framework`,` * .dylib` и `* .a` - PullRequest
4 голосов
/ 04 июня 2019

У меня есть проект, в Framework есть *.framework, *.dylib, *.a libs.

's the

Я хочузнать что это?и разница между ними.

1 Ответ

4 голосов
/ 04 июня 2019

Динамические и статические библиотеки

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

Статические библиотеки (* .a):

В случае static libraries (*.a) код, используемый приложением: копируется в сгенерированный исполняемый файл статическим компоновщиком во время время компиляции.

Динамические библиотеки (* .dylib):

Dynamic libraries (*.dylib) отличаются от статических библиотек в чувствую, что они связаны с исполняемым файлом приложения во время выполнения, но не скопировано в это. В результате исполняемый файл меньше и, потому что код загружается только тогда, когда это необходимо, время запуска обычно быстрее.

Динамические и статические рамки:

Для фреймворков нам сначала нужно понять концепцию bundle (как рамки - это особый вид связки). Пакет - это файл каталог с подкаталогами внутри. На iOS пакеты служат для удобно отправлять связанные файлы в одну упаковку - для экземпляр, изображения, перья или скомпилированный код. Система обрабатывает его как единое целое файл, и вы можете получить доступ к ресурсам пакета, не зная его внутреннего структура.

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

Статические платформы содержат статическую библиотеку, упакованную с Ресурсы. Динамические рамки содержат динамическую библиотеку с ее Ресурсы. В дополнение к этому, динамические рамки могут удобно включить разные версии одной динамической библиотеки в одну и ту же рамки!

Другие полезные ссылки:

Hackernoon

Runtastic

Статическая библиотека

Программная структура

Обновление:

Спасибо, что приняли мой ответ!

Скомпилировано для одной или нескольких архитектур?

Каждая архитектура требует другого двоичного файла, и когда вы создаете Приложение XCode создаст правильную архитектуру для чего угодно В настоящее время работает с. Например, если вы попросили его запустить в симулятор, тогда он будет собирать только версию i386 (или x86_64 для 64-битный).

Это означает, что сборки выполняются настолько быстро, насколько это возможно. Когда вы архивируете приложение или сборка в режиме релиза, тогда Xcode будет собирать для всех трех ARM архитектуры, что позволяет запускать приложение на большинстве устройств. Какие а о других сборках?

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

Поэтому вам нужно сделать сборку Xcode для всех пяти архитектур. Этот процесс создает так называемый толстый двоичный файл, который содержит срез для каждой из архитектур.

arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator

Raywenderlich: Multi-Architecture

...