Пов’язати двійковий файл з бібліотеками VS Embed Frameworks


78

Яка різниця на етапах побудови між розміщенням фреймворку у "Посилання двійкового файлу з бібліотеками" або у "Вбудовування фреймворків"?


48
Я голосую за те, щоб знову відкрити це питання, воно не є широким, я просто сам знайшов цей варіант і промовив: "Що це? Навіщо мені це потрібно?" Він безпосередньо порівнює два варіанти в XCode, і обидва вони досить дивні. Як сказати: "Ви хочете зав’язати взуття або вкласти акт зав'язування взуття? - Це досить заплутано.
Стівен Дж.

Відповіді:


42

Пов’язати двійковий файл з бібліотеками Пов’яжіть фреймворки та бібліотеки з об’єктними файлами вашого проекту, щоб створити двійковий файл. Ви можете пов’язати вихідні файли цілі з бібліотеками в активному SDK цілі або з зовнішніми бібліотеками.

Вбудовування фреймворків Ви можете створити вбудований фреймворк для спільного використання коду між розширенням програми та додатком, що містить його.

-

Хронологія (подивіться на це речення) - "Якщо ваш вміст додатка посилається на вбудований фреймворк , він повинен включати архітектуру arm64, інакше App Store відхилить його."


5

Я розглядав деякі відповіді тут і там, і хотів би внести зміни до цього навчання, якщо хтось знову зустріне це питання.

У будь-якому випадку, якщо ми хочемо використовувати будь-який з фреймворкових ресурсів (тобто API), нам потрібно зв’язати його. У цьому випадку нам потрібно додати його в розділ «Зв’язані фреймворки та бібліотеки» внизу Загальних цільових налаштувань.

Якщо ми вбудовуємо бібліотеку, ми доставляємо бібліотеку - такою, якою вона є - за допомогою нашого набору додатків. Це може бути корисно, наприклад, на машинах, що працюють під управлінням macOS, які, звичайно, не мають певної сторонньої бібліотеки.

Отже, як щодо iOS? Немає можливості встановити сторонні бібліотеки на пристрої iOS як такі - крім того, Apple дуже сувора щодо жирних платформ (бібліотеки, побудовані для декількох платформ). Тож бібліотеки все одно мають бути доставлені? Оскільки простого їх зв’язування недостатньо для користувача нашого додатку, які ще можливості ми маємо?

Саме тут вступає в дію своєрідна фаза збірки. У налаштуваннях проекту в розділі Фази побудови є двійковий файл посилання з розділом бібліотек. Цей крок вилучає непотрібні частини з жирових каркасів і залишає необхідні деталі разом із набором, щоб він міг працювати на пристрої, який агностикує залежності програми.


Однак, якщо ви просто імпортуєте AVFoundationв програму, вона магічно пов’язана, як видно з власного зразка AVCam від Apple
Енді Дент

2

Для цілі програми

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] та [pre Xcode v11]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.