Cocoa Touch Framework Swift с библиотеками для встраивания

Я работаю над набором приложений, содержащих общие модули. Я хочу хранить общие модули в Cocoa Touch Framework. Этот фреймворк также может содержать библиотеки Alamofire и SwiftyJSON, поскольку они широко используются в модулях. В настоящее время, несмотря на множество руководств, статей и т. д., прочитанных в Интернете, я не могу найти стабильное решение.

  • Можно ли интегрировать фреймворки Alamofire и SwiftyJSON в пользовательский фреймворк или лучше интегрировать их в разные проекты, использующие фреймворк (они также понадобятся по отдельности)?
  • Можно ли сгенерировать фреймворк, работающий на симуляторе и на телефоне (любые методы: подпроект или нет, динамическая или статическая библиотека, толстая библиотека)?

person Mushu8    schedule 27.03.2015    source источник


Ответы (1)


Вы абсолютно точно можете это сделать. В настоящее время у вас есть три варианта настройки для разработки и два варианта развертывания.


Разработка

Подмодули Git

подмодули Git — отличный способ добавить дополнительные библиотеки в ваш репозиторий проекта для встраивания в ваш проект. Все, что вам нужно сделать, это добавить подмодуль, а затем перетащить проект Xcode этой библиотеки в ваш проект Xcode, чтобы он был вложен в ваш проект. Затем вам нужно добавить фреймворк в качестве цели ссылки в вашу библиотеку.

Карфаген

Carthage также поддерживает подмодули git через флаг --use-submodules. Все, что вам нужно сделать, это установить carthage через homebrew, затем создайте Cartfile, который добавляет Alamofire и SwiftyJSON с помощью следующая команда.

carthage update --use-submodules

CocoaPods

CocoaPods – это система управления зависимостями, которая позволяет легко получать и развертывать различные версии данной библиотеки. Поскольку и Alamofire, и SwiftyJSON поддерживает CocoaPods, вы можете создать Podfile и запустите pod install, чтобы загрузить модули в свою библиотеку. Я бы не рекомендовал это, так как это довольно тяжелый подход. Вместо этого я бы рекомендовал использовать для разработки либо Git Submodules, либо Carthage.


Развертывание

Развертывание — это ГОРАЗДО другая ситуация. В настоящее время существует два довольно надежных механизма развертывания для iOS и OSX, которые широко используются в сообществе OSS (включая Alamofire и Carthage).

Карфаген

Если вы импортировали свои подмодули git с помощью Carthage, возможно, вы уже полностью поддерживаете развертывание Carthage. Это зависит от того, использовали ли вы файл Cartfile.private. чтобы вытащить ваши зависимости. Учитывая то, что вы пытаетесь сделать, я сомневаюсь, что вы будете использовать частный файл Cartfile, а вместо этого будете использовать общедоступный. Это означает, что вы должны быть готовы пойти прямо из коробки. Потрясающий!

CocoaPods

CocoaPods сильно отличается от Carthage и имеет несколько больших преимуществ перед Carthage по цене. Вам нужно создать файл podspec и отправить его в общедоступный или частный репозиторий спецификаций. Затем любой может добавить ваш модуль в свой проект с помощью Podfile.


Резюме

Как видите, вариантов здесь МНОГО. Я настоятельно рекомендую использовать Carthage для загрузки ваших подмодулей git, а затем поддерживать как Carthage, так и CocoaPods для развертывания. Я знаю, что это требует больших усилий, поэтому вы можете сосредоточиться на одном или другом. Извините за огромное количество ссылок и информации, но ваш вопрос наводит меня на мысль, что вы могли бы извлечь большую пользу из всех этих различных источников.

Надеюсь, это поможет вам стать ниндзя в разработке и развертывании зависимостей.

person cnoon    schedule 27.03.2015