背景#
以前は常にCocoaPods
を使用していましたが、今回はビルド時間の最適化のために、一部の Pod 依存ライブラリをCarthage
に変更しました。ここでは、Carthage
の使用方法について記録しておきます。
使用方法#
インストール#
brew
を使用して簡単にインストールできます。
brew install carthage
使用方法#
プロジェクトのフォルダ、つまり.xcodeproj が存在するフォルダにCartfile
を作成します。
touch Cartfile
次に、Cartfile を開きます。
open Cartfile -a Xcode
依存するサードパーティライブラリを追加します。バージョンの指定方法や範囲の指定方法に注意してください。以下のようになります。
github "krzyzanowskim/CryptoSwift" ~> 1.4.0
github "evgenyneu/keychain-swift" ~> 19.0
github "ibireme/YYKit"
github "ReactiveX/RxSwift" "6.5.0"
github "onevcat/Kingfisher" "version6-xcode13"
github "alibaba/HandyJSON" ~> 5.0.2
github "https://github.com/antitypical/Result.git"
github "pkluz/PKHUD" ~> 5.0
github "Moya/Moya" ~> 15.0
注意点として、Carthage
では、一部の SDK はすべてのプラットフォームをビルドするため、必要なものだけプロジェクトにインポートする必要があります。例えば、RxSwift
やMoya
などです。
最後のステップとして、インストールします。以下の異なるいくつかの方法に注意してください。
# すべてのプラットフォームをビルドします(tvOS、iOS、macOSなど)
carthage update --use-xcframeworks
# iOSのライブラリのみをビルドします
Carthage update --platform ios --use-xcframeworks
# iOSのライブラリのみをビルドし、ビルドキャッシュが存在する場合は再ビルドしません
Carthage update --platform ios --use-xcframeworks --cache-builds
# 参考:https://stackoverflow.com/questions/41442601/whats-the-purpose-of-no-use-binaries-in-carthage
carthage build --platform ios --use-xcframeworks --no-use-binaries
ビルド後に生成されたxcframework
をプロジェクトにインポートし、プロジェクトの General タブのFrameworks, Libraries, and Embeded Content
でEmbed & Sign
を選択する必要があります。以下のようになります。
もしSwiftLint
を使用している場合、ビルド後にエラーが発生する可能性があります。.swiftlint.yml
にCarthage
を除外するように追加してください。以下のようになります。
excluded:
- Pods
- Carthage
最後に、Carthage プロジェクトをコミットした後、他の人がこのプロジェクトを取得する場合は、次のコマンドを実行して Carthage フレームワークを同期する必要があります。
carthage bootstrap