今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

Carthageの使用

背景#

以前は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 がコンパイルされるものもあり、実際の必要に応じてプロジェクトにインポートできます。例えばRxSwiftMoyaなどです。

最後のステップはインストールです。以下のいくつかの方法の違いに注意してください。


# すべてのプラットフォームをコンパイルします。例えば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 ContentEmbeded & Signのチェックを切り替える必要があります。以下のように:

示意図

もしSwiftLintを使用している場合、コンパイル後にエラーが発生することがあります。その場合は.swiftlint.ymlCarthageを除外する設定を追加します。以下のように:


excluded:
  - Pods
  - Carthage

最後に、Carthage プロジェクトをコミットした後、他の人がこのプロジェクトをクローンした場合、以下のコマンドを実行して Carthage フレームワークを同期する必要があります。

carthage bootstrap

参考#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。