Ссылка бинарная с библиотеками VS Embed Frameworks
Какая разница на этапах сборки между помещением фреймворка в "Связывание бинарных файлов с библиотеками" или "Встраивание фреймворков"?
2 ответа
Связать двоичные файлы с библиотеками. Связать интегрированные среды и библиотеки с объектными файлами вашего проекта для создания двоичного файла. Вы можете связать исходные файлы цели с библиотеками в активном SDK цели или с внешними библиотеками.
Встраивание фреймворков Вы можете создать встроенный фреймворк для обмена кодом между расширением приложения и содержащим его приложением.
-
Временная шкала (посмотрите на это предложение) - "Если ваше содержащее приложение целевое приложение связано со встроенной платформой, оно должно включать архитектуру arm64, иначе оно будет отклонено App Store".
Для цели приложения
Xcode 11
Static Library
Static Framework
-Do Not Embed
Dynamic Framework
-Embed
Предварительно Xcode 11
Static Library
-Link
Static Framework
-Link
Dynamic Framework
-Embed
Как это работает Xcode v11 и до Xcode v11
Я искал некоторые ответы здесь и там и хотел бы изменить это изучение, если кто-то снова столкнется с этим вопросом.
В любом случае, если мы хотим использовать какой-либо из ресурсов фреймворка (например, API), нам нужно ссылаться на него. В этом случае нам нужно добавить его в раздел "Связанные фреймворки и библиотеки" в нижней части общих настроек цели.
Если мы встраиваем библиотеку, мы отправляем библиотеку - как она есть - с нашим комплектом приложений. Это может быть удобно, например, на машинах с MacOS, которые, конечно, не имеют специальной сторонней библиотеки.
Итак, что насчет iOS? По сути, нет никакой возможности установить сторонние библиотеки на устройство iOS - плюс Apple очень строга в отношении толстых фреймворков (библиотек, созданных для нескольких платформ). Так должен ли быть способ доставки библиотек в любом случае? Так как для пользователя нашего приложения недостаточно просто связать их, какие еще у нас есть возможности?
Вот тут и вступает в игру особая фаза сборки. В настройках проекта в разделе "Фазы сборки" есть ссылка на двоичный файл с разделом библиотек. Эти шаги удаляют ненужные части из толстых платформ и оставляют необходимые части вместе с пакетом, чтобы он мог работать на устройстве, которое не зависит от зависимостей приложения.