前回は
iOSアプリとLinuxコマンドラインアプリケーションでライブラリを共有するためにSwift Package Managerをつかってライブラリを作ってそれをiOS側ではEmbedded Binariesとして、Linux側では単純にパッケージとしてリンクして使えるようにしてみました。
これを自分のオセロプロジェクトに適用した時の躓きを雑多なメモとして残しておきます。
実行できない
The application bundle does not contain a valid identifier
これは単純に私が愚かだからです。当然バンドルとしてコピーするためにはBundle IDが必要です。swift package init
したプロジェクトには当然バンドルIdは設定されていません。設定しましょう。
これだけです。
実機で実行時にクラッシュする
dyld: Library not loaded: @rpath/Graphene.framework/Graphene...
これはフレームワークがEmbedded Binariesとして登録されているけれど実際にはコピーされていないために起こっているようです。
私の場合はコード署名の問題でした。この問題の厄介なのはシミュレーターでは大丈夫なのに実機でクラッシュするのです。実機にコピーするにはコード署名が必要だからでしょう。
共有したいライブラリのビルド設定でコード署名を設定しましょう。
オートにするとうまくいかないのでマニュアル設定です。
まとめ
私の場合はこの2点だけでした。色々いじくり回した挙句まっとうな設定を抜かしていたというオチです。やっぱり結構straightforwardにできますね。Apple結構えらいぞ。