Встроенные бинарники с iOS Framework
Мне удалось создать iOS Framework для Xcode, как показано на этом видео: -
https://youtu.be/86cPaa3FrRg?t=4m55s
В 5:00 говорится, что рамки должны быть добавлены в Embeded Binaries.
Если я добавлю его в Embeded Binaries, то он будет работать.
Не требуется добавлять GoogleAds.framework в Embeded Binaries.
Добавление в Embeded Binaries выглядит немного "взломанным" по сравнению с решением Googles.
Поэтому я думаю, что в этом уроке отсутствует какой-то шаг.
Мой вопрос: как я могу создать фреймворк, который работает без добавления его в Embed Binaries?
Ответы
Ответ 1
tl; dr Они оба являются фреймворками, но они разные.
Термин "каркас" неоднозначен. В OSX это означает упакованную динамическую библиотеку (т.е. .dylib
, заголовки и т.д.), Однако до того, как пользователи iOS 8 не смогли создать динамические библиотеки, были созданы "статические фреймворки" для создания упакованных статических библиотек (т.е. .a
, заголовков, другие вещи).
Если созданная вами инфраструктура должна быть упакована вместе с приложением в виде встроенного двоичного файла, тогда это звучит как динамическая структура, однако, если Google Ads не делает этого, я подозреваю, что это статическая структура. Его не нужно встраивать, поскольку он уже был связан с бинарным приложением.
Если вы хотите узнать, как создать статическую структуру, запустите здесь или Google для "ios static framework".
Ответ 2
До iOS 8 разработчики отправили неподдерживаемые фреймворки, которые были вымощены вместе со статическими библиотеками, имитируя структуру каталогов фреймворков Apple. Они работали, но им было больно строить, и они были static - не динамические библиотеки.
Начиная с iOS 8, Apple официально поддерживает создание сторонних динамических фреймворков в Xcode. Эти типы фреймворков подписаны на код и должны быть размещены во встроенных бинарниках для вашего приложения. Если вы ссылаетесь на них, но не вставляете их в встроенные двоичные файлы, вы получите исключение при попытке запустить на устройстве, и ваше приложение потерпит крах.
В долгосрочной перспективе я ожидал, что взломанные вместе рамки, такие как GoogleAds.framework
, исчезнут, когда доступна официальная поддержка фреймов. Это означает, что вам придется привыкнуть к созданию фреймворков в встроенных бинарниках.
Если вам не нужна поддержка iOS 7 с вашим кодом (в этом случае официальные фреймворки не являются опцией, потому что они работают только с iOS 8), я бы посоветовал не создавать неподдерживаемый тип фреймворка на этом этапе.