まだまだ踏み足りない
Alloy地雷原始末記
福原和朗 @kazurof
2014-03-19
Titanium もくもく会 #17
自己紹介
• 福原和朗 @kazurof
• アクシオヘリックス株式会社 http://www.axiohelix.com
• 客先常駐で開発やってます
• JavaでWebサービス
• Titanium歴
• 2013年10月7日から。今日で164日目。
本日の発表内容
• Alloy Framework開発でハマったところを並べます。
• これから始める人の参考になれば。
• Titanium Studio 3.2.2
• Windows - Android
• 以前も似たような発表をしました。
• 興味のある方どうぞ。
http://www.slideshare.net/kazurof/alloyminefieldstory2
発表の形式
• 現象
• なにがあった
• 原因
• どうしてこうなった
• 対策
• どう解決した
• 教訓
• 学べることはないか
おしながき
1. ¥lib配下でブレークポイントが効かない件
2. actionbarの初期化が出来ない件
3. 別画面へ遷移しようとするとエラーになる件
4. 画像を入れ替えても変わらない件
1. ¥lib配下でブレークポイント
が効かない件
現象
• ¥lib 配下の内のブレークポイント効かない。
原因
• ¥Resources¥android¥<モジュール名>.js
に処理が行く。
• ブレークポイントはそっちに必要。
• Resources は中間ファイルの置き場所
• http://developer.appcelerator.com/questio
n/146680/why-is-the-resources-folder-
hidden-in-an-alloy-project
対策
• ¥Resources 配下を表示するように設定
1.この三角を
クリック
2. Customize View
をクリック
対策(続)
ここ
• チェックボックスを外す。
• /Resources 配下が見
えるようになる。
教訓
• Alloyの内部の挙動があることを意識しましょう。
• 上っ面の理解で止まってはだめ。
2. actionbarの初期化が
出来ない件
現象
• actionBar
現象
• 画面を開いた際のactionbarを初期化が出来ない。
• $.<画面名>.activity.actionBarが undefined
原因
• よくわかりませんでした。
• 多分内部的な初期化のタイミングと整合していない。
対策
• ウィンドウのオープンイベント時に初期化するように修正
open
イベント
教訓
• 初期化処理は色々なやり方を試す。
• xml, js.
• jsでも実行タイミングは色々ある
• Controllerに直接書かれたコード
• openイベントのコード
• 「alloy開発者のためのclassic開発ガイド」的なものが必要?
3. 別画面へ遷移しようとすると
エラーになる件
現象
• androidのメニューつきのウィンドウへ遷移したい。
こういうのが設定
してあるページ
現象
• 遷移しようとするとエラー
原因
• APIのサンプルソースが間違えていた。
2014-03-07 撮影
http://developer.appcelerator.com/question/159021/wrong-ti-wiki-documentation
こっちは
間違えている
こっちが正しい
activity プロパティ
対策
• コードを修正
• activity プロパティを追加。
• 本家のAPIも直しに行ったほうが良い(?)
教訓
• APIのサンプルソースが間違えていても泣かない。
• コピペミスは誰でもやる。
• 間違いを見つけたら直しても良いかもしれない。
• github.com上のリポジトリに対してプルリクエスト。
4. 画像を入れ替えても
変わらない件
現象
• MenuItemの画像を入れ替えても変わらない
• https://developer.android.com/design/downloads/index.html
• ずっと最初の画像のまま
Androidのテーマ変更と同時
に画像も入れ替えた、はず。
現象(続)
• “¥app¥assets¥android” 配下の画像は確かに変えてある。
透明背景に灰色に
なっている
原因
• 入れ替え前後でファイルの最終更新日が変わっていない。
• ペイントで修正を入れて確認
• ファイルそのものの変化は見てない。 2013/12/03 15:39
2013/12/03 15:39
対策
• ¥Resources 配下を全部消す。
教訓
• なんか変だと思ったら ¥Resources を消しましょう。
• 直接手で
• Titanium Studioの clean や Refresh は多分効かない。
• コントローラの名前変更や移動でも同様
• 変更前のソースが悪さをする可能性。
• 消えているはずの変更前ソースが残る。動く。
• Alloy.createController(‘<古い名前>’).getView(); が、エラーを
吐かない。
まとめ
• Alloyの内部の挙動があることを意識しましょう。
• 初期化処理は色々なやり方を試す。
• APIのサンプルソースが間違えていても泣かない。
• なんか変だと思ったら ¥Resources を消しましょう。

まだまだ踏み足りないAlloy地雷原始末記