Почему мы используем 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