昨日の記事で、アプリはHardened Runtime対応されたものの、リソースとして埋め込まれる実行ファイルがHardened Runtimeに対応していない状態だったためNotarizationに失敗していました。
実は、Hardened Runtimeへの対応はアプリのビルド時ではなく、コードサインでフラグを立てることでなされます。
codesign コマンドに --options runtime
をつけてバイナリを署名することで、Hardened Runtime対応となります。
codesign --force --options runtime --sign "Developer ID Application: Shin ISE (XXXXXXXXXX)" adb
CocoaPodsなど、Xcodeで処理されているバイナリに関してはXcode側にHardened Runtimeのフラグを立てることで署名されていますが、問題のバイナリはRun Script Phaseでバイナリをコピーするようにしていたので、これらコピーで追加した実行ファイルは独自に署名してやる必要があります。
というわけで、Run Script Phaseにcodesignコマンドの呼び出しを追加しました。--sign
の引数は$CODE_SIGN_IDENTITY
に置き換えて、このような形にしています。