1 min read

Use both Carthage and CocoaPods

When the number of pods in your project increases, and it take forever to complete a fresh build, Carthage seems a better choice more and more. But you have dozens of pods, it's hard or impossible (React Native) to migrate all the pods to Carthage at once. So is it possible to use both Carthage and CocoaPods at the same time and migrate every pod one by one? Recently I figured out a way to do this.

Add Cartfile

Create Cartfile in the root directory of your project, add the pods you want to migrate, for example:

github "onevcat/Kingfisher" ~> 4.0

Run carthage update to fetch dependencies and build frameworks.

Add CarthageFrameworks.podspec

Use vendored_frameworks to reference frameworks generated by Carthage.

Pod::Spec.new do |s|
  s.name             = 'Carthage'
  s.version          = '0.1.0'
  s.summary          = 'Load Carthage frameworks'

  s.ios.deployment_target = '9.0'
  s.swift_version = '4.1'

  s.vendored_frameworks = 'Carthage/Build/iOS/*.framework'
end

Edit Podfile

Add CarthageFrameworks to your Podfile and comment out Kingfisher.

pod 'Carthage', :path => 'Carthage.podspec'

# pod 'Kingfisher'

pod `AnotherPod`

Run pod install to load Carthage frameworks.

If AnotherPod also depends on Kingfisher, now it needs to depend on CarthageFrameworks.