разъяснения статических и динамических фреймворков iOS
Я должен признать, что с выпуском iOS 8 я немного смущен динамическими и статическими фреймворками в iOS.
Я ищу способ распространения библиотеки, которую я создал, и мне нужно поддерживать iOS 7 и выше. (Примечание: это будет проприетарная структура. Я не могу использовать кокосовые стручки, а также не могу распространять источник). Вот что я уже знаю:
- iOS 8 представила "встроенные фреймворки" для iOS, но, как я понимаю, они не работают для iOS 7, только для iOS 8 и выше.
- у меня есть возможность распространять мою библиотеку как статическую библиотеку (.a file), а также распространять заголовки. Я знаю, что это распространенный способ справиться с ситуацией, но я хотел бы найти что-то более простое (а также связать с ним некоторые ресурсы, если это возможно).
- Я также обнаружил, что iOS 7 не поддерживает dynamic .библиотеки фреймворков (только статические), поскольку они не поддерживают динамическую компоновку. Но iOS 8 делает, а также статическое связывание.
и вот мои вопросы относительно этой информации:
- Я видел, что я могу создать.цель фреймворка и сделать ее статической, изменив тип Mach-O на "статическую библиотеку". Этого было бы достаточно для того, чтобы поддерживать iOS 7 без каких-либо проблем, а также распространять мою библиотеку как .комплект рамок? Если да, то почему "встроенные фреймворки" в iOS 8 так важны, как предлагают многие ресурсы в интернете? Я чего-то не хватает?
- необходимо ли кодировать .framework так же, как и с любым другим приложением, которое я делаю?
- Что делать, если мне нужно включить другие ресурсы (например, основные данные или изображения) с моим .файл фреймворка? Мне нужно будет сделать отдельную .пакет-файл для этого?
4 ответов
перед iOS8 Xcode разрешил только возможность создания статических библиотек для iOS. Общая проблема заключалась в том, что мы должны были отправить двоичный файл и заголовки отдельно.
позже, некоторые разработчики пришли с идеей создания статических структур'. [этот. framework - это просто папка с символическими ссылками на lib и заголовки]. Одним из таких примеров является https://github.com/jverkoey/iOS-Framework
эта опция будет работать для iOS 7 или 8 или до этого. Потому что они просто статические библиотеки с удобством связывания файлов заголовков вместе.
Что касается ваших вопросов о ресурсах, нам нужно будет их связать".бандл.. Для доставки их я не уверен, что мы можем заключить их в .папка framework.. В прошлом я использовал свои библиотеки как статическую структуру и комплект...
однако вышеуказанная опция не будет работать для вас, если вы используете Swift. В Xcode не поддерживает создание статических библиотек, которые включают SWIFT-код.
вы должны пойти с динамическими фреймворками, если есть быстрое использование. Теоретически динамические рамки работают в iOS7.. Но я думаю, что iTunes Connect отклонит, если приложение нацелено на iOS7 и использует динамические фреймворки :-).
надеюсь, что это помогает
С Xcode 9 и далее вы можете создавать статические фреймворки для Swift. Это возможно из-за совместимости источника ABI. Все, что вам нужно сделать, это просто изменить Mach-O type
в разделе настройки сборки целевого объекта framework.
Этот метод также применим к гибридным фреймворкам (фреймворкам с кодом Swift и Objective-C).
Swift не работает в статическом lib. Если вам нужно использовать dynamic framework, вы должны установить min iOS в 8.0 , потому что AppStore отклонить ios 7 с динамической структурой
У меня нет всех ответов, но я попытаюсь ответить на некоторые из ваших вопросов здесь.
вы получите предупреждение за использование этих фреймворков в iOS 7, однако это все, что это предупреждение. Смотрите это ответ.
вы можете включить другие ресурсы, такие как CoreData, однако вам нужно будет создать их в коде вручную. Вот учебник показывает, как создать базовую модель данных.
вы должны кодировать динамические библиотеки знака для iOS.
вам нужно убедиться, что ваша платформа поддерживает как симуляторы, так и архитектуры устройств, если вы планируете ее распространять.