macOS Catalina 環境向けに Notarization 対応を行ったアプリケーションは、 Hardened Runtime という機能が有効になっていて、デバッガをアタッチできません。
VST プラグインのような、商用のホストアプリケーション上に動的リンクライブラリとしてロードされるプラグインを開発するときは、ホストアプリケーションにデバッガをアタッチした状態でプラグインをロードしてプラグインのデバッグを行います。そのため、ホストアプリケーションが Notarization 対応済みでデバッガをアタッチできないのは結構やっかいな問題です。
この問題について、 JUCE1 のフォーラムに、「ホストアプリケーションのコードサイニング情報を上書きしてしまえばデバッグできるようになる」という有用な情報がありました。
Hardened Runtime の機能は、アプリケーションに設定されたコードサイニングの情報と紐付いているため、この情報を別のもので上書きしてしまえば Hardened Runtime を無効化できるということのようです。
実際に僕の手元の環境で試したところ、以下の手順でデバッガをアタッチできるようになりました。ここでは Ableton Live という DAW のトライアル版を使用しています。
-
コードサイニング情報を上書きした改変版アプリケーションを用意する。
改変版アプリケーションの用意# アプリケーションをどこかに複製する mkdir -p ~/Desktop/modified_daws sudo cp -R /Applications/Ableton\ Live\ 10\ Trial.app ~/Desktop/modified_daws cd ~/Desktop/modified_daws # 別のコードサイニング情報を上書きする codesign -s "<別のコードサイニング証明書名>" -f ./Ableton\ Live\ 10\ Trial.app
-
自分が開発しているプラグインの Xcode プロジェクトを開き、デバッガ起動時にアタッチするプロセスを、上記手順で改変したアプリケーションに設定する。
-
デバッグを開始する。
-
デバッガによって改変版アプリケーションが起動される時に、アプリケーションの安全性が検証されていないという警告がでるので、 「システム環境設定」→ 「セキュリティとプライバシー」→「一般」の画面を開いて、[このまま開く] ボタンを押してアプリケーションの実行を許可する。
おわりに
この解決方法はかなり強引で、アプリケーションによっては問題が起きることがあるかもしれませんが、とりあえずこの方法でいけそうでした。
-
オーディオアプリケーション開発によく使用されるフレームワーク ↩