静岡県富士市在住のiPhoneアプリ開発者ブログ -36ページ目

iPhone OS 3 と 2.x の互換性の検証

前回、SDK3.0をインストールしてみたときに、コード署名が文字化けして実機にアプリを転送できなくなり、半日試行錯誤して解決できずに結局2.2.1 に戻したという仕打ちを受け、β版にすっかりトラウマを持ってしまったわけなんですが、、、

先週の金曜日にApple から今後のアプリ審査はiPhone OS 3.0 でするよ、と(私にとっては)恐怖のメールが!

true

All apps must be compatible with iPhone OS 3.0
すべてのアプリはiPhone OS 3.0 と互換性がなければならない

ということなので、ついに来たかーといことで恐る恐る2G超のSDK3.0 をインストールして互換性を検証してみることに

今回は5回目のβ版ということで、さすがに実機での転送は直っているかなとコード署名を開いてみると文字化けは改善している模様
(しかし、スムーズにはいかず試行錯誤しながら実機転送可能になりました。解決策の詳細を後ほどエントリーするつもりです)

で、互換性なんですが

まず、上位互換性の検証
以前2.0でビルドしてあったアプリをiPhone シミュレータのハードウェアバージョン3.0にして動作させてみたところ操作中に異常終了してしまうことが判明
で、同じソースをiPhone Simulator3.0 にしてビルドしたアプリをシミュレータのハードウェアバージョン3.0で動作させてみたところ正常に動作する模様
SampleCode の SQLiteBooks のコードでも試してみましたが同様の結果になりました
ということで、上位互換性はどうやらないみたいです
追記(209/05/14)
実機にOS3.0を入れて動作させてみましたが、大きな問題なく動きました。
ということで上位互換性はあることを確認しました


次に、下位互換性の検証
SQLiteBooks のコードをiPhone Simulator 3.0 でビルドして、iPhone シミュレータ 3.0 で正常に動作することを確認後、シミュレータのバージョンくを2.2.1 にしてみたところアプリが起動しなくなってしまいました。2.xで同様です。
ということで、下位互換性もないみたいです。

ちなみに実機にもiPhone OS 3.0βをインストールできますが、現在インストールされているアプリがすべて使えなくなってしまいそうなので、まだアップしていません
(実機だと下位互換がうまくいくのかなー?とかなり淡い期待もありますが試していません)

ということで、アプリがiPhone OS 3.0 への対応が必須とされ、審査も3.0を使うということですが、iPhone OS 3.0 に対応してしまうと、アプリがリリースされても、OS 3.0 が正式リリースされないと使えないということになり、これでいいのかー?
と思ったので、自分の認識が間違っているかもしれないという確認を含めてApple Japan に下位互換性についての質問をメールしました。

はて、どうなることやら


追記
先ほど、以下の内容でメールしたところ早速返信がありました

質問内容
SDK3.1.3をインストールして、iPhone Simulator 3.0 でビルドしたプログラムを
iPhoneシミュレータのハードウェアバージョン3.0で動作させると正常に動作します
がiPhoneシミュレータのハードウェアバージョン2.2.1で動作させると異常終了してし
まいます。
上記現象は、SampleCode の SQLiteBook で確認しました。
3.0 でビルドしたプログラムは、2.x 以下のOSでは動作しない(下位互換性がない)
のでしょうか?

回答内容としては、上記の現象のように、iPhone OS 3.0 向けにビルドしたアプリは、
iPhone OS 2.2.1上で正常な動作が行えないみたいです。
App Store へのアプリケーション登録は、iPhone OS 2.2.1 向けにビルドする必要があるようです。
ビルド時には注意したいですね。

というか、
Apple から来たメールで今後のアプリの審査は、iPhone OS 3.0 でテストするみたいだけど
App Store へのアプリケーション登録は、iPhone OS 2.2.1 向けにビルドする必要があるので3.0でのテストはできないんじゃないでしょうか。

また質問してみます。

139号線から見る富士山

139号線から見える富士山

真正面にあるようにみえます

昨日は雨上がりの晴天でもあり裾まではっきり見えました

静岡県富士市在住のiPhoneアプリ開発者ブログ β

静岡県富士市在住のiPhoneアプリ開発者ブログ β

静岡県富士市在住のiPhoneアプリ開発者ブログ β

雄大な富士山をみると心が洗われます

Info.plistからバージョン番号を取得する

Info.plistのバージョン番号を取得するには、

[NSBundle mainBundle]

を使う

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

使用例:
//UILabel * lblVersion;

[lblVersion setText:[NSString stringWithFormat:@"Ver%@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]];

こんな感じにしておくと、バージョンアップ、リビジョンアップ時にコードの修正が必要なくなるので便利

参考
http://blog.popino.net/article/27177836.html