0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Notarize 申請時に、"Hardened Runtime is not enabled." エラーが出たら?(cliアプリ組み込み時)

Posted at

タイトルのエラーで「ハマった」と思ったら

 Appleに自作アプリのNotarizeを取得するため、Archiveをアップロードしようとすると、"Hardened Runtime is not enabled."というエラーが出て次のステップに進めない場合があります。
 このエラーは、申請するアプリにコマンドラインアプリケーションを組み込んでいるときに起きやすいです。

 コマンドラインアプリケーションが、Xcode projectで作成されるものであればTargetProject 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 PhaseShell Scriptでコピーを行うスクリプトを書くなりして自分のアプリケーションにコマンドラインアプリを組み込んでください。

ArchiveNotarize申請する

上記を終えたコマンドラインアプリはHardened Runtimeが許可されたアプリになっているので、今度はエラーが起きずにUploadプロセスまで滞りなく行われるはずです。

終わりまで読んでくださり

ありがとうございました。この記事が皆様のMacアプリ開発の一助となる事を願います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?