ヘルパーアプリ使用時のValidationエラー Invalid Code Signing Entitlements.

先日のアプリケーションの自動起動の件は一件落着したように見えたのだが、これをMac App Storeにサブミットするときに、はまりまくってしまった。

サブミット時は素直に行った事がないのだが、いくつかのエラーを一つずつ潰していた結果下記のエラーがどうしてもクリアできなくなった。

全然エラーの見当がつかず、再度証明書を作ってみたり悪あがきをしてみたが、まったく改善せず。もう一度、はじめに戻ってヘルパーアプリをターゲットから外してみるとあっさり通過した。

プロビジョニングファイルは次の通り。これをそれぞれのターゲットのCodesign Identityにセットした。

  1. Main.app開発用
  2. Main.app運用用
  3. Helper.app開発用
  4. Helpeer.app運用用

また、Main/Helperともにサンドボックスを有効にしている。

以上で再度アーカイブするが、やはり同エラーで先に進めない。う〜ん。困った。どうしよう。
そうこうしているうちにまた、下記のような情報に出会った。

Submit an OSX App with helper App in its bundle

理由はよくわからないのだが、一旦作成した、アーカイブの中のHelper.appを再度コードサインしなさい、ということだ。(と思う)もう一歩も前に進めないので、書かれている通りにヘルパーアプリを再度コードサインして、embedded.provisionprofileを削除してみた。結果はあっさりValidationを通過したのだが、喜んだのもつかの間、直ぐにiTunesConnectからInvalid Binaryとして突き返されてしまった。

こうなったら最後まで悪あがきをしようと、決めて、今度はHelper.app側のみをDon’t Codesignとして、アーカイブ。そして、ターミナルでコードサインしてみた。これでValidationも通り現在、Waiting for reviewになっている。
しかし、本当にこれで正解なのかはいまだにわからない。何日かすれば判定だけはくだされるんですけどね。

あと、調べている最中にもう一つの解決策として、ワイルドカードを使用したというのも見かけた。これで解決できるのかは試していないので不明。

 

[2012.8.11 追記]
上記設定で無事審査を通過しました。しかし、毎度この設定は面倒なので、はやく改善していただきたいものだ。
それにしても、審査待ち時間長過ぎる。 10.8リリースと重なったので仕方ないのでしょうね。

Avatar photo

10件のコメント

  1. はじめまして.
    サンドボックス後の「ログイン時に自動起動」について検索していたところたどり着きました.
    私も7/13の記事に登場しているのと同じサイトを参考に作成し,7/27にアップルに送信しました.
    その時,私はメインアプリ→メインアプリのプロビジョニングプロファイルでサイン
    ヘルパーアプリ→サンドボックスはON,Code Sign IdentityはDon’t Code Signにして(というよりもヘルパーアプリ様のプロビジョニングプロファイル自体を作成していない),送信しました.(ターミナルでサインもしませんでした.)まだWaiting For Reviewのままですので結果はどうかわかりませんが…

    すでに提出済みですが,コンソールで確認すると
    A sandboxed application with pid 7413, “****HelperApp” checked in with appleeventsd, but its code signature could not be validated ( either because it was corrupt, or could not be read by appleeventsd ) and so it cannot receive AppleEvents targeted by name, bundle id, or signature.と怒られていました.(動作に問題はありませんが)なので審査ドキドキです笑

    長文で申し訳ありませんが,2点質問があります.
    1.
    アーカイブ後にターミナルでサインしたと書いておられますが,アーカイブ後開かれるオーガナイザーからShow in Finderを選択,****.xcarchive内のProducts/Applications/****.app/Contents/Library/Loginitems/****HelperApp.appをサインしたということでしょうか?

    2.
    codesign -f -s “3rd Party Mac Developer Application: 名前” “ヘルパーアプリのパス/****HelperApp.app”
    としたということでしょうか?

    よろしければ教えていただけませんでしょうか.この方法でサインして動作テストするとログインアイテムに登録する段階でエラーになってしまったので…

    1. jugendさん、はじめまして、こんにちは。こちらも未だレビュー待ち状態です。iTunesConnectのBinary Detailでは、メイン/ヘルパーアプリ共にapp-sandboxがtrueになっている状態です。

      参考になるか分かりませんが、下記にご返答いたします。
      1.は、おたずねの通りです。
      2.は、幾度か思考錯誤しましたが、
      codesign -f -s ‘3rd Party Mac Developer Application: 名前’ -i “jp.example.HelperApp” –entitlements エンタイトルメンツへのパス/HelperApp.entitlements ヘルパーアプリへのパス/HelperApp.app
      で作成しました。

      iOSに比べると情報が少ないようですね。
      よろしければその後の状況もお知らせください。

      1. ご返答ありがとうございます.
        その通りに試してみたところ正常に動作しました.情報ありがとうございます.
        Mountain Lionリリース直後で混んでいるのか,こちらもまだ審査が始まらないのでまた書き込ませて頂きます.ありがとうございました.

          1. こんにちは.私も2週間以上経過してようやく審査されました.
            ヘルパーアプリはDon’t Code Signにしておりましたが,無事審査に通りました.
            審査に通ると,メインアプリもヘルパーアプリもアップルのApple Mac OS Application Signingというサインですべて上書きされるようですね.

            海外フォーラムによれば,tomさんと同じようにターミナルでサインし直す方が大半のようです.tomさんも書いておられるように,3rd party mac developer applicationではなくmac developerのワイルドカードで設定しても通るようです.

            いずれにせよ,ターミナルでのサイン方法教えて頂いてありがとうございました!!お互い無事通ってよかったですね笑

  2. dugendさん、無事審査通過されてよかったですね。経過情報ありがとうございました。通過後のアプリがApple Mac OS Application Signingで上書きされるとのことですが、これはアプリケーション内のどこかを見ると分かりますでしょうか?

  3. ターミナルで「codesign -dvvv アプリ.app」とすれば確認できます.
    提出時は
    Authority=3rd Party Mac Developer Application: 自分の名前
    になっていますが
    Authority=Apple Mac OS Application Signingとなっていました.
    私はアプリ内のヘルパーアプリはDon’t code signとしてサインしませんでしたが,同じようにApple Mac OS Application Signingで上書きされており,アプリ内の「ログイン時に起動」にチェックを入れた時の「メインアプリはサインされているけどヘルパーアプリのサインは有効ではありません」というコンソールログも表示されなくなっていました.

    海外フォーラムではワイルドカードでサインしたという情報や,ターミナルでサインしたという情報もあったり,私のようにサインしなかった人もいるようですが,結局アップルがサインを上書きするのであれば,Xcodeでアップロードに成功して,WaitingForReviewになりさえすればコードサインが変でも上書きされるので大丈夫なんだと思います.

  4. juggndさん、ありがとうございました。早速確認しました。
    結果的にはいずれの方法でも最終的にオーバーライトされるので問題ないということになりそうですね。レビューまで持っていった苦労はいったいなんだったんだろうとも思いますね。ありがとうございました。

  5. tomさん、同じような問題をかかえており大変参考にさせていただいております。
    一旦作成したipaデータを証明書を買えrisignを試みています。
    codesign -f -s ’3rd Party Mac Developer Application: 名前’ -i “jp.example.HelperApp” –entitlements エンタイトルメンツへのパス/HelperApp.entitlements ヘルパーアプリへのパス/HelperApp.app
    で私の環境では「codesign: invalid option — e」とメッセージが出てしまいます。
    「–entitlements」の部分を「–entitlements」とすると「cannot read entitlement data」となります。問題点の箇所など分りますでしょうか?

  6. Nobyさん、お疲れさまです。
    ハイフンは2つでしたね。
    お書きの通りで問題ないと思われます。ヘルパーアプリのentitlementsへのパスはとても深くて間違いやすいかもしれません。試しにこのパスを誤るとこのメッセージが出力されました。

tom へ返信する コメントをキャンセル

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