Подтвердить что ты не робот

В чем разница между встроенными бинарниками и связанными структурами

При использовании внешней инфраструктуры Xcode теперь имеет Встроенные двоичные файлы, а также Связанные рамки.

введите описание изображения здесь

Когда вы загружаете внешнюю инфраструктуру и Finder- > перетаскиваете ее в Xcode, она помещает структуру в раздел Связанные рамки и библиотеки.

Когда вы создаете библиотеку с Carthage, рекомендуется перетаскивать ее в раздел Встроенные двоичные файлы.

Оба, похоже, работают с точки зрения связи, поскольку API становится доступным в любом случае, еще больше при добавлении фреймворка в раздел Встроенные двоичные файлы, он также автоматически добавляется в Связанные структуры и библиотеки.

Итак, кто прав? Карфаген или остальная часть Интернета? и почему существуют 2 варианта включения внешних ресурсов в проекты Xcode?

4b9b3361

Ответ 1

  • Связывание. Мы должны связать структуру, если мы используем какой-либо API, определенный в нем.

  • Встраивание. Этот процесс обеспечит добавление дополнительных фреймов в пакет приложений и потенциально поможет обмен кодами между приложением и любыми пакетами расширения. Мы внедряем только сторонние фреймворки, а не те, которые предоставляются iOS, поскольку они легко доступны в устройстве. Если мы внедряем, это означает, что нам также нужно будет связать их, чтобы Xcode мог скомпилировать и создать сборку. Когда приложение запускается в устройстве, тогда встроенная фреймворк будет загружаться в память при необходимости.

Ответ 2

Если вы встраиваете двоичный файл, он будет включен в ваш продукт. Если вы просто связываете библиотеку или фреймворк без встраивания, она не будет частью вашего продукта.

Однако в iOS8 все сторонние фреймворки должны быть "встроенными". Даже фреймворк, который разделяется между различными программами, должен быть "встроен" в каждую из этих программ. В случае, если оно было установлено на устройстве в общем расположении, любой другой процесс установки, использующий тот же "встроенный" код из общего расположения, может повторно использовать эту существующую установку. Это относится к iOS8, до iOS8 это было невозможно, и вне мира iOS этот ответ не будет точным.

Ответ 3

Linking подробнее о Linker, который работает во время компиляции или во время загрузки/запуска. Linker скопировать a Library в целевой двоичный файл. Поскольку Framework является автономным, в этом случае Linker отвечает за поиск и связывание Dynamic Framework внутри пути системного загрузчика или за поиск и связывание внутри пакета.

Embedding - это процесс копирования двоичного файла в целевой двоичный файл. В результате он будет расположен внутри.

Подробнее здесь

Ответ 4

Насколько я понимаю, встроенная двоичная система включает только динамическую структуру, доступную на iOS 8 и выше, в противном случае вы можете связать только статическую фреймворк.