Notarization(Mac公証)についてはこちらの記事にて。
認証でエラー
XXX.app: replacing existing signature
XXX.app: resource fork, Finder information, or similar detritus not allowed
codesign を行うと上記のエラーで先に進めない場合があります。
この状態で作成されたパッケージを検証に出しても Invalid(無効)となり、公証できません。
notarytool が出力するエラーはこんな感じでした。
これ以外にも表示されていましたが、メッセージは大きく分けて3種類。
{ "severity": "error", "code": null, "path": "XXX.pkg/com.xxx.xxx.pkg Contents/Payload/Applications/XXX.app/Contents/MacOS/xxx", "message": "The binary is not signed with a valid Developer ID certificate.", "docUrl": "https://developer.apple.com/~", "architecture": "x86_64" }, { "severity": "error", "code": null, "path": "XXX.pkg/com.xxx.xxx.pkg Contents/Payload/Applications/XXX.app/Contents/MacOS/xxx", "message": "The signature does not include a secure timestamp.", "docUrl": "https://developer.apple.com/~", "architecture": "x86_64" }, { "severity": "error", "code": null, "path": "XXX.pkg/com.xxx.xxx.pkg Contents/Payload/Applications/XXX.app/Contents/MacOS/xxx", "message": "The executable does not have the hardened runtime enabled.", "docUrl": "https://developer.apple.com/~", "architecture": "x86_64" },
1. The binary is not signed with a valid Developer ID certificate.
2. The signature does not include a secure timestamp.
3. The executable does not have the hardened runtime enabled.
このうち 2 と 3 は対応していたので一旦置いておくとして、1 から原因を考えてみます。
期限切れによるサイン失敗
つい最近 Distribution が期限切れになるから更新してくれ、と Apple よりメールが来ていたので更新したのですが、Developer Installer や Developer Application も併せて更新する必要があるのかもしれません。
と言うことで、iOS Developper サイトより2つの認証を更新し、キーチェーンアクセスにあった古い認証は全て消去しました。
これで修正される事もあるようですが、私の場合、結果は ✖ でした。
拡張ファイル属性(xattr)をクリーンする
xattr という拡張ファイル属性が原因になることもあるとのこと。
エラーの中に Finder information というメッセージもあったので、可能性は高そう。
xattr -cr xxx.app
xattr -lr xxx.app
% xattr -cr xxx.app % xattr -lr xxx.app xxx.app/Contents/Resources/MainMenu.nib: com.apple.FinderInfo: xxx.app/Contents/Resources/MainMenu.nib: com.apple.fileprovider.fpfs#P: xxx.app: com.apple.fileprovider.dir#N: 1
これを実行した後 codesign を行ったところ、無事生成することができました。
以下、妄想
単純に xxx.app を消した後(unity から)app ファイルを作成すれば良かったのかも……? という疑問も湧きましたが、xattr が .ds_store のキャッシュに関わるものだった場合、ファイルを削除しても効果なかったかもしれません。
なんにしても上手く動いてしまったので、これ以上深堀りはせずにいこうと思います☺