6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

(Xcode12)Carthage導入手順 /ライブラリを入れたいけどcarthage updateが使えない!?

Last updated at Posted at 2020-11-21

Carthage(カーセッジ)にライブラリ(今回はNuke)を入れたかったのですが、
Nukeの公式サイト含めいろんな記事を参考にしても全て失敗しました:sob:
どうやら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のプロジェクトにビルドしたライブラリを入れる

スクリーンショット 2020-11-21 23.49.06.png

スクリーンショット 2020-11-21 23.45.18.png

以下のディレクトリを選択して「Open」を押す

プロジェクト名/Carthage/Build/iOS/Nuke.framework

Run Scriptを設定

スクリーンショット 2020-11-21 23.33.28.png
③のコード

/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
非常に参考になりました。ありがとうございました!

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?