euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

"iOSアプリとLinuxコマンドラインアプリケーション間でライブラリを共有する"を実践した時のメモ

前回は

iOSアプリとLinuxコマンドラインアプリケーションでライブラリを共有するためにSwift Package Managerをつかってライブラリを作ってそれをiOS側ではEmbedded Binariesとして、Linux側では単純にパッケージとしてリンクして使えるようにしてみました。

blog.euphonictech.com

これを自分のオセロプロジェクトに適用した時の躓きを雑多なメモとして残しておきます。

実行できない

The application bundle does not contain a valid identifier

これは単純に私が愚かだからです。当然バンドルとしてコピーするためにはBundle IDが必要です。swift package initしたプロジェクトには当然バンドルIdは設定されていません。設定しましょう。

f:id:euphonictechnologies:20161103134226p:plain

これだけです。

実機で実行時にクラッシュする

dyld: Library not loaded: @rpath/Graphene.framework/Graphene...

これはフレームワークがEmbedded Binariesとして登録されているけれど実際にはコピーされていないために起こっているようです。

私の場合はコード署名の問題でした。この問題の厄介なのはシミュレーターでは大丈夫なのに実機でクラッシュするのです。実機にコピーするにはコード署名が必要だからでしょう。

共有したいライブラリのビルド設定でコード署名を設定しましょう。

f:id:euphonictechnologies:20161103134254p:plain

オートにするとうまくいかないのでマニュアル設定です。

まとめ

私の場合はこの2点だけでした。色々いじくり回した挙句まっとうな設定を抜かしていたというオチです。やっぱり結構straightforwardにできますね。Apple結構えらいぞ。