ti.trap

15
Titanium の罠 tsuyoshi hyuga @cofeegyunyu

Upload: tsuyoshi-hyuga

Post on 30-Jun-2015

866 views

Category:

Documents


0 download

DESCRIPTION

Titanium

TRANSCRIPT

Page 1: Ti.trap

Titanium の罠

tsuyoshi hyuga @cofeegyunyu

Page 2: Ti.trap

自己紹介

現在までに、個人アプリを 10 個ぐらい作成

お仕事でも Android 、 iPhone のアプリ作成

うち、お仕事での Titanium アプリ作成は4 本

個人での Titanium アプリ作成もいくつか

Page 3: Ti.trap

All SNSChecker 複数の SNS(Twitter,Faceboo

k,mixi など ) に書き込み、閲覧、検索ができるアプリ

外部呼出しにも対応してるよ(URL スキーム、インテント)

iPhone と iPad と Android に対応

http://bit.ly/TIm1lu https://play.google.com/sto

re/apps/details?id=jp.coe.snsm&hl=ja

Page 4: Ti.trap

カードリーディングゆずりは

カードリーディングを実在のプロの方(セラピスト)にやってもらうアプリ

実在のプロの方に通知が飛び、その人の診断が終わり次第、プッシュ通知( GCM )で依頼者にお知らせして依頼結果を購入してもらう

購入と CGM はモジュール https://play.google.com/sto

re/apps/details?id=jp.coe.yuzuliha&hl=ja

Page 5: Ti.trap

その他

二つのクソゲーアプリを審査中( iPhone 版) 0o (数字 or アルファベットを当てるゲーム) Yubi tonton (指の間をトントンするアレ) iPhone 版には Game Center にモジュールで対

応( Android はどうしようか考え中) 仕事で、某企業のアプリを4つほど携わりました

( iPhone,Android 両対応)

Page 6: Ti.trap

Android TIPS 絶対に TableViewRow にクラス名を指定する ReadOnly のオブジェクトを下手にいじらない SDK2.0.2 以上で Optimus chat L-04C でアプリが起動

しない場合がある 「 Android ってウィジェットってあるでしょ?実装して

よ」

Page 7: Ti.trap

絶対に TableViewRow にクラス名を指定する

className を指定していない場合、スクロールするだけでメモリを使い果たす

しかし、適当に className を指定すると強制終了する

構造の同じ同士が同じ名前になるよう設定する

上の列と下の列は違う名前にならないといけない

Page 8: Ti.trap

ReadOnly のオブジェクトを下手にいじらない

例えば、HTTPClientで出てくるresponseXMLとかをへたに変数にコピーすると、二度と解放されない変数が出来上がります。var myXML = this.responseXML; ←myXMLは二度と解放されません

Page 9: Ti.trap

SDK2.0.2 以上で Optimus chat L-04C

助けてください(^ー^)11-11 22:33:22.761: D/com.kugoweb.launcher.lib.commons.a(1500): TOTAL:3783KB, USED:2959KB(3030896), USAGE:78%

11-11 22:33:24.221: E/wifi(1404): [android_net_wifi_getRssiHelper] rssi -6611-11 22:33:24.411: I/ActivityManager(1404): Starting activity: Intent { act=android.intent.action.MAINcat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=jp.coe.snsmtest/.SnscheckerActivity }11-11 22:33:24.481: I/ActivityManager(1404): Start proc jp.coe.snsmtest for activity jp.coe.snsmtest/.SnscheckerActivity: pid=16213uid=10090 gids={1015, 1006, 3003}11-11 22:33:25.061: I/TiApplication(16213): (main) [0,0] checkpoint, app created.11-11 22:33:26.121: I/TiApplication(16213): (main) [1063,1063] Titanium 2.1.4 (2012/10/30 17:34 e5cb5e6)11-11 22:33:26.691: I/TiApplication(16213): (main) [571,1634] Titanium Javascript runtime: v811-11 22:33:26.721: D/ImageresizerModule(16213): (main) [25,1659] inside onAppCreate11-11 22:33:26.721: D/NendandroidModule(16213): (main) [6,1665] inside onAppCreate11-11 22:33:26.731: D/ExcameraModule(16213): (main) [2,1667] inside onAppCreate11-11 22:33:26.751: I/TiRootActivity(16213): (main) [0,0] checkpoint, on root activity create, savedInstanceState: null11-11 22:33:26.751: I/TiApplication(16213): (main) [1,1] Analytics have been disabled11-11 22:33:27.231: E/wifi(1404): [android_net_wifi_getRssiHelper] rssi -6111-11 22:33:30.241: E/wifi(1404): [android_net_wifi_getRssiHelper] rssi -6211-11 22:33:33.251: E/wifi(1404): [android_net_wifi_getRssiHelper] rssi -6411-11 22:33:34.431: W/ActivityManager(1404): Launch timeout has expired, giving up wake lock! ←ここで止まる11-11 22:33:34.771: W/ActivityManager(1404): Activity idle timeout for HistoryRecord{44a9edf8jp.coe.snsmtest/.SnscheckerActivity}

※一応、V8ではなくRhinoでつくり直すと動くかも・・・

Page 10: Ti.trap

「 Android ってウィジェットってあるでしょ?実装してよ」

超苦労したけどモジュールつくりました。https://marketplace.appcelerator.com/apps/2662?856576772

Page 11: Ti.trap

iPhone TIPS

Ti.Geolocation の ACCURACY_BEST は、全然ベストではない

Titanium がゲーム作成に向かない理由は、 Ti.Media.Sound にある(と思う)

Page 12: Ti.trap

Ti.Geolocation の ACCURACY_BEST は、全然ベストではない

なぜだか知らないけど、ACCURACY_HIGHやACCURACY_BEST は、設定すると Objective-C内部で、ACCURACY_THREE_KILOMETERSと設定されてしまいます

対処法: ACCURACY_NEAREST_TEN_METERSにしましょう

Page 13: Ti.trap

Titanium がゲーム作成に向かない理由は Ti.Media.Sound

iPhoneのサウンド再生にはAVAudioPlayerが使われているAVAudioPlayer→遅い上に同期で待たされる

対処法:モジュールつくるしかないAudioServicesPlaySystemSoundかOpenALを使いましょう

Page 14: Ti.trap

 

Android はやめとけ

Page 15: Ti.trap

 頑張ってiOS Android 両対応

アプリを作ろう(^ー^)