KengoSawa2の技術的ななにか

IT屋さんのようなKengoSawa2がなんかそれっぽい事を書いていくblogです

2015年3月~4月のitunesConnectServer仕様変更がデグレードしてるかもな件

f:id:seattlei:20150415153431p:plain

現在進行形で、まだ白黒ついていないので速報な感じです。
結論が出たらこの記事も更新します。

OS X 10.10.3の公開やXcode6.3、iOS8.3ナドの公開に伴ってiTunesConnect側で以下の問題が発生
している気配があります。

現象:iTunesConnectを通じてアプリケーションビルドを提出しようとすると
ITMS-90451:. "CFBundleIdentifier Collision......」が表示されて受け付けて貰えなくなる。

原因:iTunesConnectServer側の変更?あるいは変更によるデグレード

対策:ありません。Frameworksを同梱するタイプのアプリケーションの場合、当該のFrameworksを同梱しないようにして提出すれば受け取って貰えますが、当然そんなビルドがまともに動くわけはないので。。

海外でも同じような問題で困っている人が多数いるようです。
参考:
xcode - error itms-90451 "CFBundleIdentifier Collision Error" - Stack Overflow

ちなみにこっちが僕の元記事です。(英語がひどすぎるのは気にしないでください)
osx - ITMS-90451:CFBundleIdentifier Collision Error - Stack Overflow

AppleBugReportを通じてAppleに「デグってね?」という意見は出していますので、
その内なにか返事があることを期待したいですが。。

4/29
解決しました!答えは
osx - ITMS-90451:CFBundleIdentifier Collision Error - Stack Overflow
を参考に、だけでは味気なさすぎるので、簡単に日訳します。

大きな問題は2つありました。

1個目はお題になっているitms-90451です。
これは今までMac App Storeに提出する時に発生してなかったエラーが出るようになった、というものです。
原因はFramework内のInfo.plist内に記述するCFBundleIdentifierの内容がAppのInfo.plistと同じ内容を書いていたからでした、まんまですね。
Appleのサポート曰く「これは仕様変更じゃないよ、元々ダメな書き方だったんだけど、最近チェックするようにしたんだよ」とのことです。うーん。。
私が何故同じCFBundleIdentifierを書くようにしたのかはちょっと記憶にない(たぶんネットのどっかのサンプルを参考にした)ので、私のミスと言えばミス・・・ですね。

2個目は実はお題になっていない、itms-90334です。
エラー内容はこんな感じです。
ERROR ITMS-90334: "Bundle identifier mismatch. The executable at QtCore in RapidCopy.app/Contents/Frameworks/QtCore.framework has been signed with identifier 'com.LespaceVison.RapidCopy' which does not match the bundle identifier 'org.qt-project.QtCore'

itms-90451をクリアしても、今度はなぜかこれで怒られるので、以前はここで詰んで諦めていました。
(エラーメッセージを見てもどう対処すればいいのかピンとこなかった)
つい先日、appleのsupportから「これは仕様だよ」と言われて、問題の区分けがはっきりしたところで
気付いたのです。
「これってもしかしてcodesign周りの問題か、。」
で、改めてその視点でググってみたらITMS-90334の対処として「不要なcodesignをする必要はない」との話題が出ており、
これだー!となったわけです。
以下が修正前で
codesign -f -s "YOUR APP CERT" -i "YOUR APP BUNDLEID" "YOURAPP".app/Contents/Frameworks/QtCore.framework

以下が修正後です。-iでappのIDくっつけをやめるだけですね。なんて初歩的な。。
codesign -f -s "YOUR APP CERT" "YOURAPP".app/Contents/Frameworks/QtCore.framework

ITMS-90334に対してメクラになっていたのは、Qtの公式やそれらを修正した各種サンプルを盲信した所にあったようです。実際つい直近まではそれで提出できてたという事実を過信したのが失敗の元でした。。
で、困ったことに3月末以降は、Qtのmake周りのサンプルは軒並み間違っている(同じ問題にはまる)ことになるんですが、。僕の記事に辿り着いてくれるかなあ。。