LoginSignup
4
3

More than 5 years have passed since last update.

CarthageでAlamofire入れたときに引っかかったポイント

Last updated at Posted at 2017-02-23

概要

今更ながらCarthage使ってAlamofireを入れてみたら、死ぬほどハマったのでメモ。
いろんなサイトを見て設定をああでもないこうでもない、と変えて四苦八苦。
設定を変えた初回は起動するけど、2回目以降は確実に

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Reason: image not found

のエラーを吐いて死ぬ。

環境

Xcode 8.2.1
Carthage 0.19.1

とりあえず動かすための対処法

困ったのでさらにいろいろ調べた結果、下記の設定を適用すればうまく動くことがわかった。

ターゲットのGeneral
  • Embedded BinariesにAlamofireを追加
    • Linked Frameworks and LibrariesにもAlamofireが追加される
ターゲットのBuild Settings
  • LinkingのRunpath Search Pathsに「@loader_path/../Frameworks」を追加
ターゲットのBuild Phases
  • Embed FrameworksにAlamofireがあることを確認
    • Copy only when installingのチェックはしない
  • Link Binary With LibrariesにAlamofireがなければ追加
  • 左上の+ボタンからRun Scriptを追加して
    • 1行目に「/usr/local/bin/carthage copy-frameworks」を追加
    • 「Run script only when installing」のチェックを入れる
    • Input Files下の+から「$(SRCROOT)/Carthage/Build/iOS/AlamoFire.framework」を追加

で、Cleanしてから実行。
これで動く。

問題点

コメントで頂いたとおりRun script〜のチェックを入れているとストアへのアップが失敗するため、アップ前に外してやる必要があるとのこと。
今のところ解決法が見当たらないので、このまま進めることにしたが、面倒だしミスも出そうでちょっと悩んでしまう。
さらに色々といじったところ、チェックを外しても正常動作するようになった。
結局原因は謎のまま。
で、これで話が終わらないのが苦しいところで、fabric配布用のアーカイブを作ったところ、OrganizerのOther itemsに入れられてしまっており、iOSプロジェクトとして認識されていない模様。
まだ問題がありそうだが、かなり探しても解決方法が見つからない…

Cocoapods併用による問題か?

Cocoapodsに含まれるプロジェクトのSkip Installは全部Yesになってた。

ここを参考にヘッダーを削除してみたら、ビルドが通らない。

(2017/2/28 17:47現在)まだ問題は継続してる。何が問題なんだろう。

(2017/3/1 15:18追記)
ようやく解決。原因は結局、メインターゲットのDeployment>Installation Directoryが空になっていたことだった。CocoapPodsともCarthageとも何の関係もなかったので拍子抜け。
ビルドログの比較で気づいた、長かった…

参考にしたサイトなど

http://xyk.hatenablog.com/entry/2015/10/11/115714
http://edy.hatenablog.com/entry/2015/05/17/172139
http://qiita.com/kakipo/items/3cd87e00bc96bc3888b2

4
3
6

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
4
3