Ios - Як експортувати; жир; Какао Touch Framework (для симулятора та пристрою) Переповнення стеку

С Xcode 6 ми отримуємо можливість створювати власні Dynamic Cocoa Frameworks .

какао

Симулятор все ще використовує 32-розрядну бібліотеку

починаючи з 1 червня 2015 року оновлення додатків, подані в App Store, повинні містити 64-розрядну підтримку та створюватися за допомогою пакета SDK для iOS 8 (developer.apple.com)

Ми повинні створити жирну бібліотеку, щоб запускати проект на пристроях та тренажерах. тобто підтримує як 32, так і 64 біти в Frameworks.

Але я не знайшов жодного посібника, як це робити експорт універсальний фреймворк для майбутньої інтеграції з іншими проектами (і поділитися цією бібліотекою з кимось).

Ось мої кроки для відтворення:

Встановіть ONLY_ACTIVE_ARCH = НІ в налаштуваннях збірки

Додайте підтримку armv7 armv7s arm64 i386 x86_64 до Архітектури (точно)

  1. Створіть Framework і відкрийте його у Finder:

  1. Додайте цей фреймворк до іншого проекту

Фактичний результат:

Але врешті-решт у мене все ще виникають проблеми із запуском проекту з цим фреймворком відразу на пристроях та симуляторі.

якщо я беру фреймворк з папки Debug-iphoneos - він працює на пристроях і отримує помилку на симуляторах: ld: символ (и) не знайдено для архітектури i386

Архітектури в жировому файлі: CoreActionSheetPicker: armv7 armv7s arm64

якщо я беру фреймворк з папки Debug-iphonesimulator - він працює на симуляторах. і у мене помилка на пристрої: ld: символ (и) не знайдено для архітектури arm64

Архітектури в жировому файлі: CoreActionSheetPicker: i386 x86_64

Отже, як створити динамічну структуру, яка працює на пристроях та тренажерах?

Оновлення:

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

6 Відповіді 6

Актуальність цієї відповіді: липень 2015 р. Найімовірніше, що все зміниться.

TLDR;

В даний час Xcode не має інструментів для автоматичного експорту універсального фреймворку, тому розробник повинен вдатися до ручного використання інструменту lipo. Також згідно з цим радаром перед подачею розробнику AppStore, який є споживачем фреймворку, також необхідно використовувати lipo для зняття фрагментів симулятора з фреймворку.