Комбинируйте Cocoapods и Карфаген

Я создаю фреймворк Swift, который зависит от нескольких других сторонних фреймворков. Обе эти другие платформы поддерживают Carthage и Cocoapods.

Можно ли как-нибудь сделать так, чтобы моя собственная платформа поддерживала установку с использованием как Carhage, так и Cocoapods? Или это просто недостижимо, и я должен просто выбрать один?


person Rengers    schedule 24.03.2015    source источник


Ответы (2)


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

На высоком уровне для CocoaPods вы захотите создать podspec, в котором будут перечислены ваши зависимости. Таким образом, CocoaPods будет управлять их загрузкой и настройкой, а также разрешать их в зависимости от других пользовательских зависимостей. Дополнительную информацию см. здесь.

Для Carthage вы захотите настроить свой проект с помощью целевых платформ для поддерживаемых вами платформ и добавить свои зависимости в свой Cartfile. Подробнее об этом здесь

person Keith Smiley    schedule 24.03.2015
comment
Спасибо за Ваш ответ. Тогда я, должно быть, делаю что-то не так с моим файлом Cocoapods. У меня есть список моих зависимостей с использованием, например, s.dependency 'BrightFutures', '~> 1.0'. При запуске pod spec lint происходит сбой: Unable to satisfy the following requirements: - BrightFutures (~> 1.0) required by Spine (0.1). - person Rengers; 30.03.2015
comment
Мне кажется, это потому, что у BrightFutures нет подходящей версии. Возможно, вам придется явно указать версию для бета-версий, которые в настоящее время выпущены. (см. здесь) - person Keith Smiley; 30.03.2015
comment
Спасибо! Я думал, что уже пробовал, но, видимо, не пробовал :). - person Rengers; 31.03.2015

Объединить и то, и другое на самом деле несложно. В своей структуре я начал с шаблона CocoaPods, содержащего каталоги Example и Pod. В примере проекта я создал новую цель Cocoa Touch Framework, убедился, что эта цель является общей (в разделе Продукт - Схемы - Управляемые схемы), и перетащил содержимое моего каталога Pod/Classes в проект (с не отмеченным Copy items if needed и добавил Target Membership только в эту недавно созданную структуру) .

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

person zvonicek    schedule 22.09.2016