"Не вставлять", "Вставить и подписать", "Вставить без подписи". Кто они такие?. Что они делают?

У нас есть 3 новых параметра в разделе "Каркасы, библиотеки и встроенный контент" бета-версии Xcode11 для добавления библиотек. Скриншот раздела библиотек XCode

Кто-нибудь может объяснить, что они делают?

4 ответа

Как уже было сказано @przemyslaw-jablonski, это похоже на то, что было в XCode 10, но только на одном экране (что мне лично нравится!).


Встраивание

Не встраивайте статические фреймворки и библиотеки (связывание происходит во время сборки), только общие (динамическое связывание происходит во время выполнения, поэтому они должны быть в вашем пакете).

file frameworkToLink.framework/frameworkToLink вернусь:

  • current ar archive: статическая библиотека, выберите Do not embed
  • Mach-O dynamically linked: общая библиотека, выберите Embed

Подпись (только если общий / встроенный)

Не требуется, если у него уже есть соответствующая подпись (специальная подпись не считается).

codesign -dv frameworkToLink.framework вернусь:

  • code object is not signed at all или adhoc: Выбрать Embed and sign
  • все остальное: уже правильно подписано, выберите Embed Without Signing

В основном в XCode 10 в настройках проекта (при нажатии на файл.xcodeproj с синим значком) у вас было два видимых раздела, ориентированных на фреймворк - Embedded Binaries и Linked Frameworks and Libraries. Теперь они объединены в одно целое.

Do Not Embed опция в основном связывает данный.framework с проектом.

Embed & Sign а также Embed Without Signing старый вариант встраивания.

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

Фото:

Это часть Dependencyменеджмент [О компании]

[Pre Xcode v11 Link Binary and Embed binary]

Xcode v11 имеет Frameworks, Libraries, and Embedded Content.

Встраивание

Do Not Embed

Static Linker во время компиляции пытается скопировать код из статической библиотеки в исполняемый объектный файл, используя Build Settings -> Framework Search Paths

Do Not Embed это зеркало Build Phases -> Link Binary With Libraries. Sign это зеркало Code Sign On Copy

Если вы не добавите static frameworkв этом разделе вы получите ошибку компиляции [Нет такого модуля]

Embed

Он добавляет копию фреймворка в ваш окончательный комплект. После тогоDynamic linker :dyldво время загрузки или выполнения пытается найти встроенную структуру, используя@rpath [О программе] Если он не найден, произойдет ошибка [dyld: Библиотека не загружена]

Embed это зеркало Build Phases -> Embed Frameworks. Здесь вы можете настроить папку пакета иSubpath.

Результат:

  • статическая библиотека
  • статическая структура - не встраивать
  • динамическая структура - встроить

[При использовании Link and Embed]

[Словарь]

Полная история holyswift

для более подробной информации

Другие вопросы по тегам