2017-02-01 11 views
2

Я создал один проект (Проект 1), в котором я создаю один фреймворк, который я хочу использовать в другом проекте (проект 2) так же, как и любые другие рамки (перетащить в проект).Как сделать универсальную фреймворк в iOS?

Мой выпуск

Но когда я создал структуру (в проекте 1) устройства, удерживая выбранный в Xcode, когда я использую эту схему в моем проекте 2 работает только для устройства не для симулятора. наоборот, если я создал фреймворк в симуляторе 1-го проекта, выбранном в xcode, и использую эту фреймворк в проекте 2, он работает только для симулятора.

ошибки для этого

enter image description here

То, что я пытаюсь добиться

Моя основа создана из проекта 1 должен работать как на устройстве и симулятором в проекте 2.

следующие мои настройки в обоих проектах:

enter image description here

ответ

1

Xcode построит каркас в соответствии с выбранной целью. Если фреймворк построен для симулятора, архитектура будет X86_64, i386, с другой стороны, для устройства будет armv7, arm64. Можно проверить архитектуру рамки с помощью команды lipo, как показано ниже.

lipo -info sample.frameowrk/sample 

Теперь, в вашем случае вы хотите, чтобы ваш фреймворк поддерживал как симулятор, так и устройство. Таким образом, вы должны объединить обе рамки (встроенный для устройства и тренажере) и создать систему FAT с помощью команды Lipo, как показано ниже:

lipo <path to framework build for simulator>/simulator.framework <path to framework build for device>/device.framework -create -output universal.framework 

Привели универсальная структура будет поддерживать как платформу. Вы можете проверить архитектуру, поддерживаемую универсальной каркасной структурой, как показано ниже:

lipo -info universal.framework/universal 

output : arm64,armv7,x86_64,i386 
+0

Привет, Хариш. Что вы подразумеваете под файлом 1 и файлом 2 здесь? это имя этой структуры, если да, почему два разных имени для одной структуры? следует ли запускать эту команду из папки продукта? – sss

+0

Это звучит как правильный подход, я сделал это и раньше, но забыл об этом. Я думаю, что он означает компиляцию проекта для симулятора и устройства, и получить из него оба выходных фреймворка, а затем запустить команду выше, где file1 = платформа моделирования, file2 = структура устройства и т. Д. Вы можете запускать команду где угодно, где оба файла фреймворка существуют, просто переименуйте их, чтобы никто не переопределялся при компиляции второго. – Fonix

+0

Я получаю ошибку, например /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: невозможно создать временный выходной файл: OcrSdk.framework/OcrSdk.lipo (Нет такого файла или каталога). почему я не могу создать выход? – sss

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

  • Нет связанных вопросов^_^