LoginSignup
0
2

More than 5 years have passed since last update.

【Xcode】自作埋め込みCocoa Touch Frameworkを実機インストール&Archiveする

Posted at

問題

親プロジェクトに対して埋め込みのCocoa Touch Frameworkを実機デバックしようとすると

dyld: Library not loaded: @rpath/freamwork.framework/freamwork
  Referenced from: /var/containers/Bundle/Application/4CD9C96B-257C-4A75-B2C5-581490DB904B/freamwork_sample.app/freamwork_sample
  Reason: image not found

という実行時エラーが起きてアプリがクラッシュする。
この問題はシミュレータでは起きない。

解決方法

親project -> General -> Embedded Binries に、子project.framework を追加する。
スクリーンショット 2019-03-04 21.23.37.png
↑+ボタンを押す。

スクリーンショット 2019-03-04 21.23.44.png
↑今回の例ではfreamwork.freamworkを選択して親プロジェクトのEmbedded Binriesに追加する。

引っかかりどころ

親project -> Build Phases -> Link Binary With Libraries子project.frameworkを追加すればOKかと思ってた

スクリーンショット 2019-03-04 21.47.06.png
多分.freamworkファイルを直接Add To Fileするだけなら、ここに追加するだけで大丈夫なはず。
今回のように.xcodeprojファイルごと埋め込みライブラリとしてビルドする場合には、実機&Archiveでは上記の対応が必要になるっぽい。

そもそも埋め込みライブラリを作る方法

Cocoa Touch Frameworkを作りたい場合に、完全に別プロジェクトとしてビルドして、生成して.freamworkファイルを毎回親プロジェクトにコピーしてもいいですけど、できれば同じプロジェクトのように作業したい。
ブレークポイントとかで止まってくれるように。

そういう場合には、あらかじめ作成しておいたCocoa Touch Frameworkを親プロジェクトにAdd File Toするだけで、簡単に同じワークススペースで作業できるようになる。

スクリーンショット 2019-03-04 21.59.46.png
↑今回の例ではfreamwork.xcodeprojをAddする。
ちなみに、Copy item into ...はチェックつけない方が良いとおもう。(プロジェクトファイルが複製されると、意図していない変更などややこしくなりそう)

あとがき

最近の情報がなかなか情報が見つからず(2014くらいの情報しかない。というかシミュレータと実機両方でビルドできるターゲットを作ろう!みたいな記事しかない)、丸二日解決に時間を要しました・・・
自作フレームワークを作っている同じ悩みを抱えている人の助けになれば

0
2
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
0
2