2010-02-03

AppStoreのバージョン番号ではまる


ランブリンのバージョンアップ版をリリースしようと昨夜から奮闘した記録。

最初のバージョンが1.0でだして、次のマイナーアップデート版を1.01でだしました。ここまでは問題なかったのですが、昨日出すものが機能的にも増えたこともあり、1.02ではなく1.1にしましょうと決定しました。

で、いざリリースの段階になって、サブミットしてみると

The binary you uploaded was invalid. The key CFBundleVersion in the Info.plist file must contain a higher version than that of the previously uploaded version.
 これは困った。でGoogle様に聞いてみたところ、iPhone Dev SDKに記述を見つけました


Registered Member

Join Date: Jul 2009
Posts: 8
Just went through this process with fairly simple version numbers and here's what I found;

Original version '1.0'.

Next upgrade version '1.01' - worked fine.

Tried to submit an upgrade to version '1.1' and got the "CFBundleVersion in the Info.plist file must contain a higher version than that of the previously uploaded version" error.

After much messing around with the package including check the version in the package contents of the built program submitted as version '1.10' and it worked.

Seems like there is a problem with the string to float conversion that Apple is doing.


なるほど、1.01 の次は 1.10ならオッケーなのか。ではそれで...って1.10ってなんだよ!「十」ってなんだ。マイナーバージョン10はないだろう。SuperClock 3.9.10 ぐらいしか聞いたことないぞ。これはそのまま採用しづらいな。


じゃあ、1.1.0 ならどうだ。これならまだ意味は通じるので再度チャレンジ。さて...失敗。


orz




やっぱり1.10しかないか。とバイナリーは作り直して、ふと思う。表記上はあくまで1.1.0としたいのでiTunes Connectでの表記と変えてみてはどうなるか。前に一致してないからダメだよ、といわれたんだけど物は試し。エイヤっとアップしたら、なんと問題なく通った!おぉ、じゃあAppStoreにでるバージョン表記とBundleVersionは関係ないのか?関係がないならいっそ違う番号体系になっているほうが間違いは少ない。ということで、最終的には


iTunesConnect Version = 1.1.0
Info.plist CF Bundle Version = 2


という状態でアップしました。問題はなし。


混乱を極めたバージョン問題ですが、結局見た目のバージョンと内部バージョンを分けるというのがベスト。AppStoreにバイナリーをサブミットしたときに言われエラーは、結局内部バージョンを上げなさいということ。そのバージョンと表記上のバージョン(テキストフィールドにいれるもの=ユーザーの目に触れるもの)は別と考えたほうが混乱はない。だいたい戦略上の理由で見た目のバージョンは決められることも多いし。


ただし、アプリ内のバージョン表記も必要で、これは今までCFBundleVersionKeyを参照していたので、新たにDisplayBundleVersion という項目を追加しました。今後箱の二本立てで管理することにします。

0 件のコメント: