"Не вставлять", "Вставить и подписать", "Вставить без подписи". Кто они такие?. Что они делают?
У нас есть 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
.
Результат:
- статическая библиотека
- статическая структура - не встраивать
- динамическая структура - встроить