タイトルのエラーで「ハマった」と思ったら
Appleに自作アプリのNotarizeを取得するため、Archiveをアップロードしようとすると、"Hardened Runtime is not enabled."というエラーが出て次のステップに進めない場合があります。
このエラーは、申請するアプリにコマンドラインアプリケーションを組み込んでいるときに起きやすいです。
コマンドラインアプリケーションが、Xcode projectで作成されるものであればTargetのProject Settingsで、Entitlementを編集・追記してあげれば酔いのですが、外部からダウンロードしてきてビルドはconfigure, makeで作られるアプリケーションだとEntitlementを付加してのビルドは難しいです。
この記事は上記問題に遭遇してしまった際の対処法の説明になります。
(sudo )make installの前に
make install出来ると言うことは、installするべきバイナリーは作られているはずなので、ここで一端通常のステップから脇道に逸れます。
インストールされるバイナリーを探す
この方法でビルドできると言うことは、どんな名前のコマンドが作られるか知っている方だという前提の元で話を進めますが、ビルド中のディレクトリで
find . -name "コマンドラインアプリケーション名"
と、ファイル検索を行い、目的のcliアプリを探します。
バイナリーが見つかったら
あとは、codesignで署名してあげれば良いだけです。--options runtimeパラメーターがミソっぽいです。具体的には
codesign --force --deep-verify --verbose --sign "Developer ID Application:
証明書の自分の名前 (チームID)" コマンドラインアプリケーションファイル名
""で括られたDeveloper ID Application: 以降の部分はKeychain Accessの自分の証明書(My Certificates)の中のDeveloper ID Application: (以下略)を選んで、上に表示される証明書の1行目をドラッグで選択した後、コピー&ペーストで書き間違いが起きないように気をつけましょう。
繰り返し行うのであれば、aliasに登録しておくのも良いかもしれません。
(sudo )make installを続行
これで、Hardened Runtimeが許可されたコマンドラインアプリケーションがインストールされるので、直接プロジェクトに追加するなり、Build PhaseでShell Scriptでコピーを行うスクリプトを書くなりして自分のアプリケーションにコマンドラインアプリを組み込んでください。
ArchiveをNotarize申請する
上記を終えたコマンドラインアプリはHardened Runtimeが許可されたアプリになっているので、今度はエラーが起きずにUploadプロセスまで滞りなく行われるはずです。
終わりまで読んでくださり
ありがとうございました。この記事が皆様のMacアプリ開発の一助となる事を願います。