最近、仕事でMacアプリの開発をしています。

iOSと同じように、別途作成したFrameworkファイルを使おうと思い、プロジェクトに追加してアプリを実行しようとしたら、下記のようなエラーが出ました。

dyld: Library not loaded: @executable_path/../Frameworks/Hogehoge.framework/Versions/A/Hogehoge
  Referenced from: /Users/hoge/Library/Developer/Xcode/DerivedData/HogehogeDemo-daviklftitamwdexebbzmoarwpgj/Build/Products/Debug/HogehogeDemo.app/Contents/MacOS/HogehogeDemo
    Reason: image not found

iOSの時はこんなエラーは見たことがなくて正直困りました。Build SettingsでFrameworkのパスも通しているし、それにビルド自体は通っているんです。Macアプリ開発の時は、iOSと違って何かおまじないが必要なのだろうと感じてググっていると、ズバリ解決してくれるサイトを見つけました。

Mac OS X用Framework作成手順 | ABT Knowledge Blog

要は、アプリを実行した時にアプリ内(hoge.appの中)にFrameworkが見つからない、というエラーのようです。対応方法は上記サイトのとおりですが、後学のためにも自分でも書いておきたいと思います。

Xcodeにて、アプリの中にFrameworkファイルをコピーする設定を追加します。事前にProject Navigatorに対象のFrameworkファイルを登録しておく必要があります。

XcodeのBuild Phasesを開き、画面上部にある+ボタンをクリックします。

表示されたNew Copy Files Build Phaseをクリックすると、下のほうにCopy Filesという項目が追加されます。

そのCopy Filesの中あるDestinationFrameworksに変更し、Project Navigatorから対象のFrameworkファイルをドラッグアンドドロップします。

これでアプリを実行すると、エラーが消えているはずです。

Macアプリ開発は、iOSとまた違うハマりどころがあって、なかなかツライです。