Связывание со встроенной платформой из расширения приложения

у меня есть проект с

  • один приложения: MyApp
  • одна цель встроенного фреймворка:MyKit.framework
  • цель расширения одного приложения:MyExtension

вот пример проекта.

Я хочу использовать общий код MyKit на MyExtension но когда я связываю его, я получаю предупреждение

ld: warning: linking against a dylib which is not safe for use in application extensions: /Users/me/Library/Developer/Xcode/DerivedData/MyApp-dnztzmxjghjlsteetlokzhjtjqkm/Build/Products/Debug-iphonesimulator/MyKit.framework/MyKit

документация Apple говорит

чтобы настроить целевой объект расширения приложения для использования встроенного фреймворка, установите для параметра сборки "требуется только API-интерфейс расширения приложения" значение "Да". Если вы этого не сделаете, Xcode напомнит вам сделать это, отобразив предупреждение "связывание с dylib небезопасно для использования в расширениях приложений".

который правильно установлен по умолчанию. Я!--32-- > мог бы избавиться от предупреждения, установив "требуется только API-интерфейс App-Extension-Safe", но это может привести к некоторому приложению неприятия.

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

Как правильно связать En embedded framework с расширением приложения, чтобы избежать этого wrning?

1 ответов


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

чтобы использовать фреймворк, установите" Require Only App-Extension-Safe API " в YES в настройках целевой сборки framework. После этого в вашем образце проекта не будет предупреждений.


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