先日、Macアプリの申請Validationで、10.7.3で作成されたバイナリだとアプリ申請を受け付けてくれないと書きましたが、どうやら、10.7.3の11D50bで作成されたバイナリがひっかかるようです。ちなみに、iPadアプリやiPhoneアプリは11D50bで作成したバイナリでもValidationは問題なく通過してアプリ申請可能です。
Validationエラーは、こんなメッセージです。
This bundle is invalid. Apple is not currently accepting applications built with this version of the OS.
11D50bは、10.7.3で”CUI CUI CUI CUI”という文字がかかれたウィンドウが表示されてしまい全てのアプリの起動に失敗するという不具合を回避するためにAppleが提供している統合アップデートOSなので、11D50より11D50bの方が正常な状態だと言えます。(参考記事:OS X Lion 10.7.3リリース! , OS X Lion 10.7.3 不具合)
その正常な状態のOSで作成されたバイナリがValidationではねられるのは、最後にbという通常はつかない文字がついているためだけのような気がします。もしくは、単なる許可リストへの登録もれの可能性もあるかもしれません。しかし、公式リリースされているOSではありますが、本当にAppleが問題ありとみている可能性も非常に少ないながらも考えられますので、それが気になる方は、以下の手順は実施しないでください。以下は、11D50で作成されたバイナリということにしてValidationを通す方法です。
回避手順
1. アーカイブを作成
2. オーガナイザで作成されたアーカイブを確認
3. アーカイブを右クリックして、”Show In Finder”を選択
4. 選択状態のアーカイブを右クリックして、”パッケージの内容を表示”を選択
5. フォルダの階層を Products/Applications/と下っていく
6. アプリ名.appを右クリックして、”パッケージの内容を表示”を選択
7. Contentsフォルダの中を見る
8. _CodeSignatureフォルダを削除
9. フォルダ内にある、info.plistを編集
key: BuildMachineOSBuild に対するstringを “11D50b”から”11D50” に変更
10. アプリ名.appが表示されるフォルダに戻る
11. キーチェーンアクセスを起動
12. 自分の証明書の中から、 “3rd Party Mac Developer Application: 名前”を探してダブルクリック
13. 表示された証明書の”通称”部分をコピー
14. ターミナルを起動して次のコマンドを実行
$ codesign -s "<コピーした通称をペースト>" -fv <アーカイブのアプリ名をドロップして場所を入力>
実行例:
$ codesign -s "3rd Party Mac Developer Application: xxxxx xxxx" -fv /Users/tak/Library/Developer/Xcode/Archives/2012-02-21/PasteShogibanMac\ 12-02-21\ 0.46.xcarchive/Products/Applications/PasteShogiban.app /Users/tak/Library/Developer/Xcode/Archives/2012-02-21/PasteShogibanMac 12-02-21 0.46.xcarchive/Products/Applications/PasteShogiban.app: replacing invalid existing signature /Users/tak/Library/Developer/Xcode/Archives/2012-02-21/PasteShogibanMac 12-02-21 0.46.xcarchive/Products/Applications/PasteShogiban.app: signed bundle with Mach-O thin (x86_64) [com.cacao.PasteShogibanForMac]
15. Validateを実行
関連記事
- 2012/11/14 外付けSSDにアプリ提出環境を作成