Titanium Mobile で原因不明のエラー


表題の件、結論から言うと clean build することで回避できました。
さて、それでは事の原因と経過を報告していきます。

Titanium Studio で開発始めました(9/17より)


原因というのは変かもしれないですが、
まず自分がTitanium Studio での開発がド素人であったことが
ハマった原因でもあります。
初心者の人は検索でこの記事に辿りつけるとラッキーですね。

まずはサンプルコピーするじゃないですか


はい、まさにソースをコピーしました。
自分は動きがあるアプリを作りたかったので

var animation = Ti.UI.createAnimation();

でオブジェクトを動かすことが出来ることを確認することにしました。

ところが、createAnimationしただけでiPhoneエミュレータがクラッシュ


しました。クラッシュ。
しかもconsole窓には何も表示されない。
サンプルで、しかも定義部分を書いただけでクラッシュするなんて
信じられない現象でした。
まずはエラー原因を調べるために例外処理を書きました。
初心者コピペ脳になっているとtry,catchに気づくのにも盲目になりますね。

try {
	var animation = Ti.UI.createAnimation();
} catch (E) {
	Ti.API.error("ERROR = "+E);
}

で、表示されたエラーが

[WARN] attempted to load: TiUIAnimationProxy.
[ERROR]...

で、エラーをぐぐった


[titanium]原因不明のエラーでアプリケーションがクラッシュするようになってしまったときにすべき対処
http://blog.shokuan-taro.net/?p=35


ふむふむ...プロジェクトを作りなおせと...
めんどくさいしやだ!

めんどくさいから clean build 試してみた


昔、VisualStudio使ってると、debug buildでは動くのにrelease buildで動かない
なんてことがあったりして、そういう時はclean buildしてみる
というのが、経験的にありました。
なので、buildディレクトリを削除してからリビルドしてみました。
(Titanium Studio には clean build ボタンがない?あったら教えて下さい)
追記:Titanium StudioのProject/Clean...で同様の効果がある模様


そしたらうまく行った。
1回目のbuildは情報が若干足りなくてうまく行きません。
でも勝手にファイルを追加してくれるので2回目からは通ります。


理由は不明だけど、サンプルコピペして、消して、というのを繰り返すと
なにかイケナイものが蓄積されてしまうのでしょうかね。
ダメなときは、clean buildを試す、という方法も一応頭に入れておきましょう。