はじめに
carthageの対応は簡単というのを聞いたので、やってみるとちょとつまずいたのでメモ。
環境
- macOS High Sierra 10.13.2
- Xcode9.2
- swift4
やり方
これ(AMNowClockView)を例に導入してみます。
Cocoa Touch Frameworkを選択する。
ライブラリのクラファイル、xib、リソースなどを追加する。
-
外部アクセスするクラスやプロパティにpublic修飾子をつける
public class AMNowClockView: UIView { public var clockBorderLineWidth:CGFloat = 5.0 }何も修飾子をつけない場合、
internalになるので外部からアクセスしたいものには全てpublic修飾子をつける必要がある。 -
gitにpushする
-
gitにタグをpushする
ver.1.0とか適当にタグをつけてpushする。(何もない場合エラーになる)
これでライブラリのcarthage対応は完了
導入方法
-
Homebrewのインストール
コマンドプロンプトで下記のコマンドを実行する。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" -
Carthageのインストール
コマンドプロンプトで下記のコマンドを実行する。
brew install carthage -
ライブラリを導入するプロジェクトに移動する
コマンドプロンプトで下記のコマンドを実行してプロジェクトファイルに移動する。
cd プロジェクトファイルのパス -
Cartfileの生成
コマンドプロンプトで下記のコマンドを実行する。
touch Cartfile -
Cartfileの編集
コマンドプロンプトで下記のコマンドを実行する。
vim Cartfileキーボードの
iを押し入力モードにしてgithub "adventam10/AMNowClockView"と入力する。
キーボードのescを押して入力モードを解除する。
コマンド:wqと入力して、Enterで保存して終了する。バージョンの指定は下記
github "adventam10/AMNowClockView" // 最新 github "adventam10/AMNowClockView" == 2.0 // 2.0 github "adventam10/AMNowClockView" >= 1.0 // 1.0以上の最新 github "adventam10/AMNowClockView" ~> 1.0 // 1.0以上2.0未満の最新 -
ライブラリをビルドする
コマンドプロンプトで下記のコマンドを実行する。
carthage update --platform iOSもし下記のようなエラーが出た場合
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATHコマンドプロンプトで下記のコマンドを実行してパスを設定してやる必要がある。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer下記のようなエラーが出た場合
Carthage requires git 2.3.0 or later.XCodeのPreferences -> Locations -> Command Line Toolsを指定すると解決しました。
-
プロジェクトにライブラリを追加する
General→Linked Frameworks and Libraries→+→Add Other... から下記のようにライブラリを追加する。


-
Run Scriptを追加する
build Phases→+→New Run Script PhaseでRun Scriptを追加する。


上記画像の選択位置に/usr/local/bin/carthage copy-frameworksと入力する。Input Filesに
$(SRCROOT)/Carthage/Build/iOS/AMNowClockView.frameworkを追加する

以上でライブラリの導入は完了
導入後の問題
-
IBDesignablesとIBInspectablesが無効になる
どうやらコンパイルされると、IBDesignableとIBInspectableの情報がなくなるようです。
External Frameworkの@IBDesignable/@IBInspectableを有効にする方法のように有効にする方法もあるようですが、現状は公式な方法で有効にすることは無理なようです。 -
xibのカスタムクラスの設定でエラーになる
xibのViewのカスタムクラスにライブラリのクラスを設定すると下記のようなエラーになる。
Unknown class AMNowClockView in Interface Builder file
今まであまり気にしたことがなかったが、どうやらModuleもちゃんと設定しなければいけないようです。

-
Command PhaseScriptExecution failed with a nonzero exit code
久々にCarthageを使ったら上のエラーが出たがCarthageのアップデートで解決しました。
ターミナルで下記コマンドを実行でアップデートbrew upgrade carthage
さいごに
IBDesignablesとIBInspectablesが使えないのは残念...


