Cocoa Touch Framework не может отлаживать симулятор в проекте внедрения

У меня есть каркас Cocoa Touch, построенный с XCode 6, нацеленным на iOS >= iOS8. Эти параметры целевой архитектуры инфраструктуры являются значениями по умолчанию, что означает, что я ничего не изменил. Архитектуры установлены на стандартные (которые не включают x86_64, подробнее об этом позже). Сама фреймворк содержит код Swift и Objective-C, поэтому его создание с использованием обходной статической библиотеки от Ray Wenderlich не будет работать.

Теперь, если я создаю новый проект и добавлю к нему проект фреймворка, проект будет создан как для устройства, так и для симулятора. Это нормально.

Однако, если я возьму файл .framework и добавлю его в другой проект, как если бы вы добавили какую-либо другую структуру, проект не будет создан для симулятора. Ну, он строит, но он падает, потому что он не может найти соответствующие классы. Он отлично работает на устройстве, и архивирование работает так же, как ожидалось.

Сам каркасный проект уже дает мне предупреждение; "Предупреждение Apple Mach-O Linker - каталог не найден для опции.... (Debug-ophoneos)".

Любая помощь будет высоко оценена!

Ответы

Ответ 1

Наконец-то я нашел решение этой проблемы. Как оказалось, XCode больше не создает живые двоичные файлы из коробки. Не знаю, что Apple может рассуждать по этому поводу, тоже мне кажется, что иногда ребята, ответственные за XCode, любят высмеивать разработчиков, используя их продукт...

В любом случае вы можете найти окончательное руководство о том, как создать жирный бинарный файл для симулятора и всех устройств iOS (да, вы даже должны использовать разные архитектуры, чтобы получить структуру, которая работает на более старых и более старых устройствах): https://kodmunki.wordpress.com/2015/03/04/cocoa-touch-frameworks-for-ios8-remix/

Короче говоря,

  • Создайте Cocoa Touch Framework
  • Установите Архитектуры на arm64, armv7 и armv7s
  • Установите "Build Active Architecture" на "NO"
  • Установите "Действительные архитектуры" в arm64, armv1 и armv7s
  • Добавьте следующую схему script в схему построения фреймов как пост-действие архива;

    set -e

    DEVICE_BIN = "$ {OBJROOT}/UninstalledProducts/${TARGET_NAME}.framework" SIMULATOR_BIN = "$ {SYMROOT}/../../../../Продукты/Debug-iphonesimulator/${TARGET_NAME}.framework"

    ARCHIVE_PATH = "$ {SRCROOT}/_ Архив" rm -rf "$ {ARCHIVE_PATH}" mkdir "$ {ARCHIVE_PATH}"

    если [ "$ {CONFIGURATION}" = "Release" ]; затем

    если [-d "$ {DEVICE_BIN}" ]; тогда DEVICE_PATH = "$ {ARCHIVE_PATH}/Release" mkdir "$ {DEVICE_PATH}" cp -r "$ {DEVICE_BIN}" "$ {DEVICE_PATH}" фи если [-d "$ {SIMULATOR_BIN}" ]; тогда SIMULATOR_PATH = "$ {ARCHIVE_PATH}/Debug" mkdir "$ {SIMULATOR_PATH}" cp -r "$ {DEVICE_BIN}" "$ {SIMULATOR_PATH}" липо-соединить "$ {DEVICE_BIN}/${TARGET_NAME}" "$ {SIMULATOR_BIN}/${TARGET_NAME}" -output "$ {SIMULATOR_PATH}/${TARGET_NAME}.framework/${TARGET_NAME}"

    ц

    ц

    выход 0;

Это создаст каталог _Archive в каталоге проекта, где вы можете найти фреймворки для отладки и выпуска.

Важно: На сегодняшний день (22 мая 2015 года) вам сначала нужно будет создать проект с симулятором, а затем архивировать с помощью устройства. В противном случае вы не получите универсальный двоичный файл!

Это сообщение было создано во избежание ошибок в мертвой ссылке, для получения обновлений в отношении процесса упаковки, ВСЕГДА попробуйте шаги, опубликованные на веб-сайте kodmunki, с которым я связался выше, поскольку шаги в этом сообщении, возможно, уже устарели