Carthage(カーセッジ)にライブラリ(今回はNuke)を入れたかったのですが、
Nukeの公式サイト含めいろんな記事を参考にしても全て失敗しました
どうやら2020年11月現在,Xcode12はCarthageにちゃんと対応してくれていないようです。
苦しみながらもようやく入れることができたのでXcode12での使い方を紹介します。
##Carthageインストール
ターミナルにて
brew install carthage
##Carthageファイル作成
以降、自分のプロジェクト内にて実行。
touch Cartfile
##Carthageファイル編集
vim Cartfile
この中に使用したいライブラリを記述します。
今回はNukeを入れます。
公式サイト: https://github.com/kean/Nuke/blob/9.1.0/Documentation/Guides/installation-guide.md#carthage
github "kean/Nuke" ~> 9.0↲
(:wq もしくは :wq!で上書き保存)
##ここからXcode12 独自の対応!!
参考URL: https://github.com/Carthage/Carthage/issues/3019#issuecomment-665136323
###carthage.shファイル作成
touch carthage.sh
###carthage.shファイル編集
vim carthage.sh
その中に下記をコピペ。 (:wq もしくは :wq!で上書き保存)
#!/usr/bin/env bash
# carthage.sh
# Usage example: ./carthage.sh build --platform iOS
set -euo pipefail
xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)
trap 'rm -f "$xcconfig"' INT TERM HUP EXIT
# For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise
# the build will fail on lipo due to duplicate architectures.
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig
export XCODE_XCCONFIG_FILE="$xcconfig"
carthage "$@"
そして下記を入力してCarthage内のライブラリを更新します。
./carthage.sh update --use-submodules
※尚、Nuke公式サイトには
Run carthage update to build the framework and drag the built Nuke.framework into your Xcode project.
と指示が出ておりますが、Xcode12でcarthage updateやっても失敗します。
しばらく待つと、こんな返答がきました。エラーと出ておりますがこれでビルドできています!
*** Fetching Nuke
*** Checking out Nuke at "9.1.2"
*** xcodebuild output can be found in /var/folders/02/f5qmc3jn2_n9c962rsw716fm0000gn/T/carthage-xcodebuild.VZl87L.log
*** Skipped downloading Nuke.framework binary due to the error:
"Bad credentials. The API can't be accessed using username/password authentication. Please create a personal access token to access this endpoint: http://github.com/settings/tokens"
*** Building scheme "Nuke" in Nuke.xcodeproj
Xcode内での設定(以降、Xcode11と同じ操作)
Xcodeのプロジェクトにビルドしたライブラリを入れる
以下のディレクトリを選択して「Open」を押す
プロジェクト名/Carthage/Build/iOS/Nuke.framework
Run Scriptを設定
/usr/local/bin/carthage copy-frameworks
④のコード
※尚、他にもframework入れるときは2段目以降に書けばOK!
$(SRCROOT)/Carthage/Build/iOS/[ライブラリ名].framework
importする
準備が整ったのでコード上に下記を書いてビルド! 「Build Succeed」が表示されれば取込完了です!
import Nuke
##おわりに
僕はこれを取り込むのに2日かかりました。。。 環境構築はしんどいですね。
皆さんの時間がショートカットされれば幸いです。
参考にさせていただいたサイト
https://qiita.com/tsuzuki817/items/8f6e2e0c2b3f9d197097
非常に参考になりました。ありがとうございました!