Notarization(Mac公証)で resource fork~ のエラーが出る場合

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 InstallerDeveloper 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 のキャッシュに関わるものだった場合、ファイルを削除しても効果なかったかもしれません。

なんにしても上手く動いてしまったので、これ以上深堀りはせずにいこうと思います☺


返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA