Objcで書かれていたアプリをSwiftに移行する準備としてObjcの大半のコードをフレームワークに移した。
Embedded framework として埋め込むのだが、実行時に参照できる様に Runpath Search Paths に Frameworkのある場所として @executable_path/Frameworks を指定することで参照できる様になる。
これで問題なさそうだったので申請して結果を待っていたのだが、手元にiOS 12のiPadがあって 試しにTestFlight からインストールしてみると起動してすぐにクラッシュする。慌てて審査を取り消した。
Xcodeから起動して直接確認してみようとするが、古くてDeviceSupport ファイルがなくて起動できない。
こちらを参照して組み込んで起動できる様になった。
iPadにはiOS 12.5.7がインストールされているが iOS 12.4 までしかなく動かせないかもと頭をよぎったがこれで試して問題なかった。
戻って、Xcodeから起動すると __abort_with_payload で終了している。
検索しても有用な情報がない。
コンソールには
SyscallError: setpriority(PRIO_DARWIN_ROLE, 5562, 3): No such process
と表示されている。
これで検索するとどうやら Framework が見つからない様だ。
試しに、該当FrameworkをOptionalにしてみるともう少し先まで行って、Framework内にあるメソッドが見つからない異常で終了している。やはりFrameworkが読み出せいなための様だ。
色々試してみるが解決に至らなかった。
iOS12で問題があるのは分かったので、iOS13からサポートすることとしたいが、iOS13のデバイスがないので大丈夫かは分からない。
しかし、iOS13が動くデバイスはiOS15まで動くので、シミュレータではiOS15.5で確認できているので何かあったら最新にしてくださいで対応することとしよう。