タイトルのエラーで「ハマった」と思ったら
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アプリ
開発の一助となる事を願います。