2016-01-05 18 views
1

Я использую версию Xcode 7.2 (7C68).Framework может работать только на симуляторе, но не на устройстве

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

enter image description here

Я проверил настройки сборки в последней DTCoreText-1.6.17 проекта:

Цели: DTCoreText (IOS)

арки: ARMv7, arm64

ONLY_ACTIVE_ARCH: NO

VALID_ARCHS: arm64, ARMv7, armv7s

Я думаю, что эти параметры в норме. Чем я «создаю для профилирования», нажав Shift + CMD + i.

  • Сложение с использованием тренажера:

Я заметил, что текущее устройство я просто используется для здания Simulator (iPhone 6 Plus). И я нахожу DTCoreText.framework под папкой Release-iphonesimulator. делая это, DTCoreText.framework работает отлично только при использовании симулятора iphone, но не на реальном устройстве.

  • Сложение с помощью устройства:

Чем я пытался восстановить DTCoreText.framework с той же сборки настройки, но с использованием "Generic IOS устройств" или «реального устройства (например: iPhone 6s) ". Я получил DTCoreText.framework под Release-iphoneos папка. Таким образом, DTCoreText.framework работает только при использовании реального устройства, но не на симуляторе iphone.

Я не знаю, почему это происходит. Как создать DTCoreText.framework как для симулятора, так и для реального устройства?

ответ

2

Проблема решена !!!

Что мне нужно, это создать «FAT» для «i386 x86_64 armv7 arm64»!

How to export "fat" Cocoa Touch Framework (for Simulator and Device)?

Это сообщение мне очень помогает!

Просто используйте "лий -info" команды ПРОВЕРИТЬ своды, например:

admins-MacBook-Pro:~ admin$ 
admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText 
Architectures in the fat file: /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText are: armv7 arm64 
admins-MacBook-Pro:~ admin$ 
admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText 
Architectures in the fat file: /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText are: i386 x86_64 
admins-MacBook-Pro:~ admin$ 

Как мы можем видеть:

  • При использовании сборки тренажера, Xcode генерировать рамки с помощью арок "i386, x86_64"
  • При создании с использованием устройства xcode генерирует фреймворк с использованием ARCHS "armv7, arm 64 "

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

admins-MacBook-Pro:~ admin$ lipo -create /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText -output /Users/admin/Desktop/DTCoreText 

Теперь вы можете найти„DTCoreText“двоичный файл на рабочем столе. Используйте липо cmd, чтобы проверить его снова:

admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DTCoreText 
Architectures in the fat file: /Users/admin/Desktop/DTCoreText are: i386 x86_64 armv7 arm64 

Да! своды являются «i386 x86_64 ARMv7 arm64»

Поместите «DTCoreText» двоичный файл в DTCoreText.framework и заменить старую!

Выполнено!

Теперь мы должны использовать фреймворк для устройства и симулятора!


Но

Это только для удобства целей тестирования, если вы хотите, чтобы представить свое приложение для App Store. яблоко отклонит его из-за "iOS frameworks containing simulator slices can't be submitted to the App Store".

Прочтите этот пост: Creating iOS/OSX Frameworks: is it necessary to codesign them before distributing to other developers?