Яка різниця на етапах побудови між розміщенням фреймворку у "Посилання двійкового файлу з бібліотеками" або у "Вбудовування фреймворків"?
Яка різниця на етапах побудови між розміщенням фреймворку у "Посилання двійкового файлу з бібліотеками" або у "Вбудовування фреймворків"?
Відповіді:
Пов’язати двійковий файл з бібліотеками Пов’яжіть фреймворки та бібліотеки з об’єктними файлами вашого проекту, щоб створити двійковий файл. Ви можете пов’язати вихідні файли цілі з бібліотеками в активному SDK цілі або з зовнішніми бібліотеками.
Вбудовування фреймворків Ви можете створити вбудований фреймворк для спільного використання коду між розширенням програми та додатком, що містить його.
-
Хронологія (подивіться на це речення) - "Якщо ваш вміст додатка посилається на вбудований фреймворк , він повинен включати архітектуру arm64, інакше App Store відхилить його."
Я розглядав деякі відповіді тут і там, і хотів би внести зміни до цього навчання, якщо хтось знову зустріне це питання.
У будь-якому випадку, якщо ми хочемо використовувати будь-який з фреймворкових ресурсів (тобто API), нам потрібно зв’язати його. У цьому випадку нам потрібно додати його в розділ «Зв’язані фреймворки та бібліотеки» внизу Загальних цільових налаштувань.
Якщо ми вбудовуємо бібліотеку, ми доставляємо бібліотеку - такою, якою вона є - за допомогою нашого набору додатків. Це може бути корисно, наприклад, на машинах, що працюють під управлінням macOS, які, звичайно, не мають певної сторонньої бібліотеки.
Отже, як щодо iOS? Немає можливості встановити сторонні бібліотеки на пристрої iOS як такі - крім того, Apple дуже сувора щодо жирних платформ (бібліотеки, побудовані для декількох платформ). Тож бібліотеки все одно мають бути доставлені? Оскільки простого їх зв’язування недостатньо для користувача нашого додатку, які ще можливості ми маємо?
Саме тут вступає в дію своєрідна фаза збірки. У налаштуваннях проекту в розділі Фази побудови є двійковий файл посилання з розділом бібліотек. Цей крок вилучає непотрібні частини з жирових каркасів і залишає необхідні деталі разом із набором, щоб він міг працювати на пристрої, який агностикує залежності програми.
AVFoundation
в програму, вона магічно пов’язана, як видно з власного зразка AVCam від Apple
Для цілі програми
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]