Подтвердить что ты не робот

Встроенные бинарники с 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?

4b9b3361

Ответ 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), я бы посоветовал не создавать неподдерживаемый тип фреймворка на этом этапе.