スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


このエントリーをはてなブックマークに追加

iPhone3Gだけ起動しない問題の真相

iPhone3GユーザーにAdHocでアプリを配布した所、2回目以降起動しなくなる現象が発生した。
iPhone3GSおよびiPhone4の場合は問題なく起動する。

1回目と2回目以降の違いは、セーブデータを読み込むかどうかだけ。

送ってもらったクラッシュログを見ると、確かにデコード中にクラッシュしている。しかし、オブジェクトならまだしも、double型の読み込みなので、何とも解せない。

第2世代のiPod touchを借りてまで調査をして、以外な所に原因を見つけた。

なんと、当初から原因がログにバッチリ出力されていた。

{文字化け} failed to launch in time


・・・そう、処理が重く、時間内に起動できなかったのだ。セーブデータを読み込むと、時間がかかるので、高い確率でタイムアウトしていたらしい。時間がかかる処理は起動後に行うように変更すると、見事クラッシュは改善された。ちなみに、機種毎の起動時間を測ると、以下の結果となった。

  iPhone 3Gで約15秒、iPhone 3GSで9秒、iPhone 4で8秒と、3Gが極端に遅い。

3GS以降の速度向上が際立っているが、それ以前に1点。このアプリはそもそも起動が重すぎるの気が。。。リリースまでになんとかしたい所。

それにしても、迷宮入り寸前のこの現象、真面目に焦った。。

※クラッシュログの見方については以下の記事を参照
 ラッシュログの見方(配布済みアプリのバグ調査方法)
 クラッシュログの見方②(配布済みアプリのバグ調査方法)

このエントリーをはてなブックマークに追加

コメント

非公開コメント

なるほど!

とても参考になる記事ですね!
ちょうど同じ問題で行き詰まっていて感動しました。
起動の前後というのは
[window makeKeyAndVisible]
の前後ということなんでしょうか?

No title

コメントありがとうございます。
元々は[window makeKeyAndVisible]の直前でシリアライズ処理を行っていました。
今回の対応では、
(1)タイトル画面の前にローディング画面を1枚挟んで、そのviewWillAppearにタイマーをセット。
(2)タイマーイベントでデシリアライズ処理。処理が終わったら、タイマーをオフにしてそのままタイトル画面に遷移。
としました。もしかしたら、ローディング画面など作らず、タイトル画面のviewWillAppearに直接書いてもいけるかもしれません。(未確認)
余談ですが、Default.pngとローディング画面を別の画像にして、商標ロゴ(「KONAMI」みたいな)→「読み込み中」という2段アニメーションで、待ち時間のイライラを解消する作戦にしてみました。

すみません。。

なんかボケてました。。
一つ質問させていただいてよろしいでしょうか。
didFinishLaunchingWithOptionsの中で
重たい処理をしていて、重い処理の後、
[window makeKeyAndVisible]を呼んでいるんですが、
didFinishLaunchingWithOptionsは起動後に呼ばれるんですよね。

どのタイミングで重たい処理を仕込めばいいんでしょう?
UIWindowをオーバーライドして
viewWillAppearで処理すればOKですか?

思わぬ落とし穴ですね。。手強いです。

別スレッドで非同期にすれば良いかと。

まず先に1点訂正を。
>直接書いてもいけるかもしれません。(未確認)
これはダメでした。したがって、重い処理は、起動時にフレームワークから呼び出されるメソッドに入れない方が良さそうですね。
やはり、起動後にタイマーをセットするなどして、別スレッドで重い処理を実行するしかなさそうです。

簡単なサンプルコードを作ってみたので、参考程度に見てください。
http://araking.hustle.ne.jp/app-sample/Crush3GSample.zip

該当と思われるアプリを購入してみたのですが、3GSでは瞬速起動ですね。全く違う原因の可能性も・・・。(違うアプリ??)

ありがとうございます!!

ほんとにありがとうございます。
サンプル参考になりました!
いろいろ試して、
didFinishLaunchingWithOptionsの中で
重い処理を
[NSThread detachNewThreadSelector:~]で処理したところ
タイムアウトせずに動作しました。

didFinishLaunchingWithOptionsで
早くreturn YESしないといけないということですね。

No title

お礼といっては何ですが
アプリ購入させていただきました。

その後、あれこれ調べたのですが
古い機種ではCore Dataのパフォーマンスが悪いみたいです。
http://stackoverflow.com/questions/3588327/how-can-i-improve-core-data-fetch-performance-on-the-iphone

起動時のタイムアウトって何秒に設定されているんでしょうね。
Appleのリファレンスを参照してみましたが
該当する記述が見つけられませんでした。。

解決して良かったです!

>solaris さん
解決して良かったです!私の方も、仮物のiPod touch(2nd)と知人のiPhone 3Gで安定動作が続いています。
こういった問題は、実機がないと原因究明も難しいし、修正しても解決したかどうか判断するのが難しいから厄介ですね。
追加情報の提供ありがとうございます。私もリファレンスを見てみましたが、タイムアウトに関する情報は見つけることができませんでした。
レビューで「起動しない」という記述をよく目にしますが、タイムアウトが原因で起動しないアプリも結構ありそうですね。

>アプリ購入させていただきました。
お気遣いありがとう御座います!!
iPhoneアプリ紹介
パズルナビ for パズドラ 2016
最強のコンボツール!
colorization-large-icon.png

スクリーンショットを読み込むとコンボを自動計算してくれるパズドラの攻略アプリです。


AirRuler
(簡易距離計)

リモートで簡単に距離を測定できるアプリ!
colorization-large-icon.png

目標地点に向けてiPhoneを傾けるだけで簡単に距離を測定できます。ゴルフの距離測定機能付きパターの代わりにも使えます。


補色残像アート
~見えない色が見えてくる~
白黒なのにカラーに見えてしまう不思議な映像を体験しよう!
colorization-large-icon.png

補色残像という目の錯覚を利用して、白黒写真がカラーに見える不思議な映像を作成できます。作成した映像は、アニメGIFに変換したり、Twitterに投稿することもできます。


タイピング革命
フリック練習はタイピング革命で!ネットランキングで盛り上がろう!
icon-l-typing.jpg

オンラインランキング上のプレイを閲覧できるリプレイ機能付き!フリック入力とローマ字入力に完全対応したタイピング練習アプリです。初心者も安心のトレーニングモード付き。

★なんと!あのAppBank様に紹介して頂きました!!
typing-sale-led.gif


簡単3Dカメラ
iPhoneで手軽に3D写真を楽しもう!平行法/交差法/アナグリフ/グラグラ3Dに対応。
icon-l-3d.jpg

2枚の写真を撮影するだけで、裸眼で立体視できる3D写真が作成できます。85円でステレオ写真もアナグリフも楽しめるのは簡単3Dカメラだけ!

プロフィール

あらきんぐ☆

Author:あらきんぐ☆
はじめまして。あらきんぐです。
4月からiPhoneを購入し、その魅力に取り付かれて、気がついたらアプリ開発の道へ!仕事でプログラム開発をしていますが、基本「動けばOK!」な適当エンジニアです。適当でもアプリは作れる!っていう事を、ブログを通じて証明していきたと思います。

最新記事
最新コメント
最新トラックバック
カテゴリ
FC2カウンター
全記事表示リンク

全ての記事を表示する

Twitter
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
アクセスランキング
[ジャンルランキング]
コンピュータ
275位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
34位
アクセスランキングを見る>>
オススメ商品
iPhone/iPodと一般オーディオを繋ぐ貴重なアイテム!
アプライドオリジナルアイテム MBB...

アプライドオリジナルアイテム MBB...
価格:3,980円(税込、送料別)

開発中級者にオススメ!「こんなことができるんだ!」と驚かされる一冊
【送料無料】iPhone...

【送料無料】iPhone...
価格:1,500円(税込、送料別)

安い!シンプル!カッコいい!
希少なiPhone対応キーボード内蔵ケース
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。