2015-05-15 6 views
16

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

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

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

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

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

ответ

7

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

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

Вкратце;

  • Создание Cocoa Touch Framework
  • Установите архитектурами arm64, ARMv7 и armv7s
  • Набор "Build Активная Архитектура" на "Нет"
  • Set "Правильные Architectures" в arm64, armv1, and armv7s
  • Добавьте следующий скрипт в схему построения фрейма как архив Post-action;

    набор -e

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

    ARCHIVE_PATH = "$ {SRCROOT}/_ Архив" гт -rf "$ {ARCHIVE_PATH}" MkDir "$ {ARCHIVE_PATH}"

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

    , если [-d "$ {DEVICE_BIN}"], а затем DEVICE_PATH = "$ {ARCHIVE_PATH}/Выпуск" MkDir "$ {DEVICE_PATH}" CP -r "$ {DEVICE_BIN}" " $ {DEVICE_PATH} " fi if [-d" $ {SIMULATOR_BIN} "], затем SIMULATOR_PATH =" $ {ARCHIVE_PATH}/Debug " mkdir "$ {SIMULATOR_PATH}" cp -r "$ {DEVICE_BIN}" "$ {SIMULATOR_PATH}" lipo -create "$ {DEVICE_BIN}/$ {TARGET_NAME}" "$ {SIMULATOR_BIN}/$ {TARGET_NAME}" -output "$ {SIMULATOR_PATH}/$ {TARGET_NAME} .framework/$ {TARGET_NAME}"

    фи

    фи

    выход 0;

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

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

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

+0

«Как оказалось, XCode больше не создает живые двоичные файлы из коробки». Xcode никогда не делался для симулятора и устройства. Это два разных SDK. – quellish

Смежные вопросы