2015-03-10 3 views
1

Я разрабатываю Today Widget Extension для приложения с целью развертывания раньше, чем iOS 8.0. В apple Extension Programming Guide они рекомендовали использовать встроенную инфраструктуру для совместного использования кода между расширением приложения и его содержащим приложением.Использование встроенной инфраструктуры в приложении, содержащем расширение, с целью развертывания iOS 7.0 и более ранних версий

Вы можете создать встроенную инфраструктуру для совместного использования кода между вашим приложением и его содержащим приложением.

В конце этого руководства они объясняют, как развернуть содержащее приложение в более ранних версиях iOS 8.0 с помощью команды dlopen.

После того, как я добавил цель рамки, проект не будет успешно выполнен. Это всегда проваливались со следующими ошибками:

  1. Lipo Ошибка: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: не может открыть входной файл: PATH_TO_BUILD/ARMv7/APP_NAME (Нет такого файла или каталога)
  2. Apple, Mach-O Linker Error: ЛД: встроенный dylibs/рамки поддерживаются только прошивкой 8.0 и выше (@ RPATH/FRAMEWORK_NAME) для архитектуры ARMv7

(Ошибка 2 повторяет с архитектурой arm64)

Что я делаю неправильно?

Есть ли другой способ обмена кодом между расширением приложения и его содержащим приложение?

Если кто-то знает о решении dlopen, пожалуйста, введите учебник «Как» (примеры приветствуются).

ответ

2

Вы не можете использовать встроенные фреймворки на iOS 7, даже с dlopen.

То, что они объясняют на этой странице (и не очень четко), заключается в том, что если ваше приложение использует встроенную фреймворк на iOS 8 и, вы хотите развернуть приложение на iOS 7, у вас не может быть рамки загружайте автоматически на iOS 8. Вместо этого вы копируете фреймворк в пакет приложений как часть процесса сборки, а затем только на iOS 8 используйте dlopen для загрузки фреймворка из кода.

КСН 7, структура будет существовать в приложении пачке, но IOS 7 не поддерживает загрузку в приложение с помощью любых средств, в том числе dlopen

Если вы хотите поделиться кода между приложением и расширением и развертывание на iOS 7, вы не можете использовать фреймворк для совместного использования кода. Вам необходимо включить весь общий код как в целевой объект приложения, так и в цель расширения.

+0

На данный момент я включил весь общий код как в цель приложения, так и в цель расширения, отлично работает. Но не будет ли отклонено приложение при отправке в App Store? –

+0

Почему вы так думаете? –

+0

Возможно, у Apple есть причина, по которой они рекомендовали использовать встроенную инфраструктуру для совместного использования кода между расширением приложения и его содержащим приложением. –