Application Loader でのアプリのアップロードに失敗する
SPECIAL
Application Loader で codesign verification エラーとなる場合
Xcode で作成した iPhone アプリを iTunes Connect へアップロードしようとしたところ、Application Loader に次のエラーが表示されてしまいました。
Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate.
この原因についてインターネットで調べてみても、iTunes Connect へリリースするためのビルドのコード署名に設定されている Provisioning Profile が、Provisioning Portal の "Distribution" で発行せずに "Developer" として発行したものを使っているからという理由ばかりが目立ちました。
けれど今回の自分の環境では、このアプリに対して "Distoribution" の Provisioning Profile が設定されています。
久しぶりに Application Loader でアップロードしたのもあって、もしかして Provisioning Profile の有効期限が切れているのかもと思って更新してみましたけど解消されませんでした。
また、先日に iOS Developer Program の有効期限を更新してはじめてのアップロードだったのもあって、もしかして iOS Developer Program の Distribution Certificate 証明書の更新あたりでミスがあるのかもしれないと思ったのですけど、有効期限も、それが関連付けられている Provisioning Profile も、問題なさそうな感じでした。
証明書を作り直したりしながら試してみても、一向に解消される気配がないまま、ふと思い立って Xcode3 に付属している Application Loader を使ってアップロードしてみたところ、エラーが解消されました。
今回の上手くいかなかった環境は Xcode4 + iOS SDK 5 beta 4 の環境で、Xcode4 に付属の Application Loader だったので、もしかすると iOS SDK 5 beta 4 用の環境の Application Loader だったからか、または Xcode 4 環境の Application Loader だったからなのかもしれないですね。
ビルドしたアプリは Xcode3 でのビルドだったのですけど、Xcode4 でビルドしたアプリであっても、Xcode3 の Application Loader を使えば "Application failed codesign verification." のエラーは解消されたので、必ずしも Xcode と Application Loader のバージョンが違うからとは言えないような気がします。
ちなみに、Xcode4 + iOS 5 SDK beta 4 でビルドしたアプリの場合、"Application failed codesign verification." の問題が解消されても、まだそれをアップロードすることはできないようになっていました。
Xcode4 + iOS SDK 5 beta 4 でビルドしたアプリを Xcode3 に付属の Application Loader でアップロードしようとすると、次のエラーが表示されました。
iPhone/iPod Touchi: application executable is missing a required architecture. At least one of the following architecture(s) must be present: armv6
これはどうやら、iPhone 3G や iPod Touch が armv6 というアーキテクチャとなっているのに、Xcode4 でビルドしたアプリが armv7 アーキテクチャ用になっているために表示されるエラーのようです。iPhone 3GS から armv7 になっているそうです。
これについては、Xcode4 の"有効なアーキテクチャ" のところに "armv6" が表示されていたので、アーキテクチャのところの "Standard (armv7)" に加えて "armv6" を追加してビルドしてあげることで、解消できる感じでした。
"Architecture" のところで "Others" を選択して、そこで "$(ARCHS_STANDARD_32_BIT)" に加えて "armv6" を追加する感じです。
ともあれ、このように対応しても、Xcode4 + iOS 5 SDK beta 4 でビルドしたアプリを Application Loader でアップロードしようとすると、現時点では次のエラーが表示されてしまいました。
This bundle is invalid. Apple is not currently accepting applications built with this version of the SDK.
つまりまだ、iOS 5 SDK beta 4 でビルドしたアプリのアップロードは許可されていない感じですね。
そんな感じで今回は Xcode や iOS SDK 切り替わり時期特有のエラーだったような感もありましたけど、ともあれ beta 版の iOS SDK をインストールするときには別のフォルダーにインストールするなどして、前のバージョンを残しておいた方が良いかもしれないですね。