Почему мы используем use_frameworks в CocoaPods?

Я использовал use_frameworks в CocoaPods Podfile много раз. Мне просто интересно, почему мы его используем? Я не мог получить прямой ответ.

Пример:

platform :ios, '8.0'
use_frameworks!

target "CityWhether" do
    pod 'Alamofire'
    pod 'SwiftyJSON'
end

Ответ 1

use_frameworks сообщает CocoaPods, что вы хотите использовать Frameworks вместо статических библиотек. Поскольку Swift не поддерживает Static Libraries, вы должны использовать фреймворки.


В другом ответе я объяснил различия между Static Libraries и Framework:

Cocoa Коснитесь рамок

Они всегда с открытым исходным кодом и будут созданы так же, как и ваше приложение. (Так Xcode иногда компилирует его, когда вы запускаете приложение и всегда после очистки проекта.) Рамки поддерживают только iOS 8 и но вы можете использовать Swift и Objective-C в рамках.

Cocoa Нажмите Static Libraries

Как говорится в названии, они являются статическими. Поэтому они уже собраны, когда вы импортируете их в свой проект. Вы можете поделиться ими с другими не показывая им свой код. Обратите внимание, что статические библиотеки в настоящее время не поддерживайте Swift. Вы должны будете использовать Objective-C в пределах библиотека. Само приложение все еще может быть записано в Swift.

Источники: Мой другой ответ | Блог AddThis.com

Ответ 2

Вам не нужно "use_frameworks!" больше.

В Xcode 9 beta 4 и CocoaPods 1.5.0 теперь поддерживаются быстрые статические библиотеки. Основным преимуществом является более быстрое время запуска приложений, особенно если у вас много модулей - iOS 10 и 11 не являются самыми быстрыми, когда у вас много многоязычных пользователей.

CocoaPods 1.5.0 был выпущен в начале апреля 2018 года, поэтому вам может потребоваться обновление, чтобы получить его: sudo gem install cocoapods.

Я нашел несколько контейнеров, которые не работают корректно со статическими библиотеками, но, тем не менее, мой пробег меняет.

Ответ 3

Добавление

use_frameworks!

Подфайл означает, что мы хотим, чтобы перечисленные фреймворки устанавливались динамически, а не как статические.

Ответ 4

use_frameworks! объявил, что вы хотите использовать динамические рамки, а не статические библиотеки.

С выпуском Xcode 9.0 и CocoaPods 1.5.0. вы можете использовать статические библиотеки с swift, если вы не используете use_frameworks.

Одним из use_frameworks является то, что все ваши фреймворки в Pods/Products - это фреймворки.

Вот связанная статья: Базовый обзор статических и динамических фреймворков на ios

Ответ 5

По умолчанию Cocoapods собирает Static Library, если вам нужен Static Framework, вы можете указать use_frameworks! в своем Podfile.

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

С CocoaPods 1.5.0 разработчики больше не ограничиваются указанием 'use_frameworks! в их Podfile для того, чтобы установить модули, которые используют Swift. Взаимодействие с Objective-C должно просто работать. Однако, если ваш модуль Swift зависит от Objective-C, он должен включать "модульные заголовки" (см. ниже) для этого модуля Objective-C.

читать больше здесь и здесь

Ответ 6

use_frameworks! в podfile демонстрирует, что он будет поддерживаться iOS 8.0 и более поздними версиями. Он не поддерживает iOS 7.0 для всех библиотек cocoapods.

Если вы хотите, чтобы проект поддерживал iOS 7.0 и более поздние версии, вы должны удалить его.

Итак, изменения - это удар

platform :ios, '7.0' target "CityWhether" do end