2012年12月3日月曜日

[Titanium奮闘記5日目]2回に1度出るエラーが治りました! #TitaniumJP


○いろんな人を巻き込みながら

プログラムって本当にちょっとのミスで全く動かなくなりますね(´・ω・`)
以下いろいろつまづいたところをつらつらと。

・Androidで「Application installed. Launch from drawer on Home Screen」と出るのに、実機ではインストールされていない or 違う名前でインストールされる

これはtiapp.xmlの設定をいつの間にかいじっていたのが原因でした。
<ti:app xmlns:ti="http://ti.appcelerator.org">内の<id>や<name>を確認してみてください。
これがいつの間にか(多分ファイル移動時にミスって)違う名前になっていたため、いくら書き出しても違う名前でインストールされていたようです。

・「'undefined' is not an object (evaluating '変数名')」が出る。

for文を回してるときに起こったエラーです。原因は単純で、回し過ぎでした(´・ω・`)
要は、入れた変数が「undefined」だからここにそれ入れたらダメ!というエラーなので、変数かループ条件をチェックしてみましょう。

・グローバル変数的なものを使いたい。

JSだと関数内で定義した変数は関数外で使えませんよね?
まずそこら辺が分かっていなかったんですが、Titaniumでは「Ti.App.メソッド又はプロパティ名」でどこからでも使えるようになるみたいです。

ただ、アプリの終了までメモリを使い続けるし、グローバル変数だからこそ複雑なバグが生まれる場合もあるので、何でも使えばいいってモンじゃないみたいです。

…え、僕ですか? チキンなので外部定義にしましたがなにか?

・JSSに関するいろいろなこと

後輩の「JSSは使うな」の一言ですべてが解決しました。



○2回に1度出るバグの直しかた

前回のポストで「そんなファイルねーだろコラ」と言ってましたね。

[ERROR] Error: Traceback (most recent call last):  File "/Users/(ユーザー名)/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 1341, in main    cleanup_app_logfiles(ti, log_id, iphone_version)  File "/Users/(ユーザー名)/Library/Application Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py", line 503, in cleanup_app_logfiles    os.remove(i)OSError: [Errno 2] No such file or directory: 'bad path 4ACC2000-0000-0000-0000-006B00000000'
中略
あれ、でもbuilder.pyがないんですが…(´・ω・`)


よくよく考えてみると、「Liberary」フォルダが見つからず、そこから以下の階層に行けなかったので諦めただけでした。
んで、見つからないのはないのではなく、見えていなかったみたいです。隠しフォルダですね。

Macは、ドットファイルが隠しファイルになります。「.bash_profile」とか。隠しファイルは、Finderに表示されません。Windowsのエクスプローラだと、隠しファイルを表示するオプションがあります。しかし、Macには見えるところに設定がないようです。
http://d.hatena.ne.jp/shunsuk/20090714/1247567640


自分はターミナルから打ち込んで非表示を消しました。
あとは前回の記事でも掲載したこの方法でエラーが出なくなります。

上記エラーメッセージ中に出てくる builder.py を変更したら直った。パス中の空白をバックスラッシュでエスケープする。 
変更前
simulator_dir = os.path.expanduser('~/Library/Application Support/iPhone Simulator/%s' % iphone_version)
変更後
simulator_dir = os.path.expanduser('~/Library/Application\ Support/iPhone\ Simulator/%s' % iphone_version) 
http://3.1415.jp/node/142



バージョンによって異なりますが、該当箇所はTitaniumのバージョン2.1.2だと467行目にありました。
コマンド+Fで「simulator_dir」を調べていった方が早いかもね。

あ、ちなみにXcodeでコードを変更させました。
Xcodeで行番号を表示するには「環境設定(preferences)→Text Editing」の「Show: Line numbers」にチェックをいれてください。

ついでにバックスラッシュの打ち方も覚えた。OS Lion & Xcodeでも「option(alt) + ¥」で打てましたよ。

あまり普通の人には関係のないバックスラッシュですが、たまーに必要な時があります。
ソフトウェアの環境にもよりますが、 optionキー(alt) + \ で、バックスラッシュになります。
http://mactips-lib.net/m/macosx/035.html



○明日の予定
・テーブル表示
・UIの見直し
・実際に使うデータベースを作る←全然進んでない

さて、今週はすることがいっぱいです…がんばろうっと><

0 件のコメント:

コメントを投稿