Iphone - Створіть статичну бібліотеку жиру (симулятор пристрою) за допомогою Xcode та SDK 4 - Переповнення стека

Здається, ми можемо - теоретично - створити єдину статичну бібліотеку, яка включає як симулятор, так і iPhone та iPad.

Однак Apple не має жодної документації з цього приводу, яку я можу знайти, і шаблони Xcode за замовчуванням НЕ налаштовані для цього.

Я шукаю просту, портативну, повторно використовувану техніку, яку можна зробити всередині Xcode.

  • У 2008 році ми мали змогу створювати одинарні статичні бібліотеки, які включали як sim, так і пристрій. Apple вимкнула це.
  • Протягом 2009 року ми створили пари статичних бібліотек - одну для sim, одну для пристрою. Apple відключила і це.

Це чудова ідея, це чудовий підхід, але він не працює: http://www.drobnik.com/touch/2010/04/universal-static-libraries/

  • У його сценарії є деякі помилки, що означає, що це працює лише на його машині - він повинен використовувати BUILT_PRODUCTS_DIR та/або BUILD_DIR замість того, щоб "вгадувати" їх)
  • Останній Xcode від Apple заважає робити те, що він робив - він просто не працюватиме через (документовану) зміну способу обробки цілей Xcode)

Інший запитувач SO запитав, як це зробити БЕЗ xcode та з відповідями, які зосереджувались на частині arm6 проти arm7 - але ігнорував частину i386: Як скомпілювати статичну бібліотеку (жир) для armv6, armv7 та i386

  • Оскільки останні зміни Apple, частина Simulator вже не така, як різниця arm6/arm7 - це інша проблема, див. Вище)

створіть

10 відповідей 10

Просте копіювання/вставлення останньої версії (але інструкції з встановлення можуть змінитися - див. Нижче!)

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

Використовуйте це, а потім налаштуйте його, щоб додати підтримку для збірок архіву - c.f. Коментар @ Frederik нижче про зміни, які він використовує, щоб зробити цю роботу приємно в режимі архіву.

НОВІ ЗМІНИ: 1. Додана підтримка iOS 10.x (при збереженні підтримки для старих платформ)

Інформація про те, як використовувати цей скрипт із вбудованим в проект іншим проектом (хоча я настійно рекомендую цього НЕ робити - коли-небудь - Apple має кілька помилок шоу-пробок у Xcode, якщо ви вбудовуєте проекти один в одного, з Xcode 3.x до Xcode 4.6.x)

Бонусний сценарій, який дозволяє автоматично включати набори (тобто включати файли PNG, файли PLIST тощо з вашої бібліотеки!) - див. Нижче (прокрутіть унизу)