Amazon

2012年1月15日日曜日

"Titanium Mobileで作る! iPhone/Androidアプリ"でハマった点


gihyo.jpでTitaniumの実践トレーニングの記事

Titanium Mobileで作る! iPhone/Androidアプリ


があるのだけど、この記事かなり良い。
Titanium Mobileが分かっていない人でも記事を読み進めて行けばJavaScriptでiPhone/Androidアプリを作成できてしまうのだ。
こういう記事書ける人すごいですね。

さて、執筆時点よりいくつかupdateがあるせいか、
記事通りでは上手く行かなかった点をまとめておきます。


第1回 まずはTitaniumを体験してみよう
にて
プロジェクトをTitaniumMobileSampleというプロジェクト名で作成。
特に変更も加えないままiphone Simulatorで実行

[ERROR] xcodebuild: error: The project 'TitaniumMobile.xcodeproj' does not contain a target named 'TitaniumMobile-universal'.
[ERROR]
[ERROR] Error: Traceback (most recent call last):
上記のようなエラーが表示される。
どうやらプロジェクト名にTitaniumが含まれるとダメらしい。Titaniumを含まない新しくプロジェクトを作り直してみたところ、無事動く


第3回 TitaniumでTwitterクライアント──レイアウトの調整

にて

var win1 = Titanium.UI.createWindow({
    url: 'table_view.js', //ここに注意!
    title:'Tab 1',
    backgroundColor:'#fff'
});
とあるけれどこの
url: 'table_view.js', //ここに注意! 
が曲者。以下がプロジェクトのファイル配置
ProjectName
-Resources
--android
--iphone
--xxx
--app.js
-build.log
-xxx
-tiapp.xml 
ここで、table_view.jsはどこに置くべきか。
通常ならばapp.jsと同じResourcesフォルダの下に置こうとするが、これは間違い。
実行した段階でtable_view.jsが見つからないというエラーが出る。
"...sample.app/table_vie.js, NSUnderlyingError=0x8cdb470 "The operation couldn’t be completed. No such file or directory"}” 
 
この場合、いったんtable_view.jsファイルをビルドするデバイスのフォルダ(ex.iphone)に移動してRunするとちゃんと読み込んでくれる。
どうもビルドする際に、キャッシュをしているようで、Resourcesフォルダにファイルが追加されてもキャッシュが更新されないようで、
強制的にiphone/androidフォルダに変更を加えてキャッシュを更新している、ということをやってる。

第4回 TitaniumでTwitterクライアント──OAuthを使ったAPI呼び出し
結構正念場のOAuthの内容。ここではTwitterのUIが変わったことを受けて、本文にも書いてあるけどこの第四回のコードでは動かない。ということで、テストはひとまず置いておいて第五回、第六回まで進める。で、第六回の記事に書いてあるけど、oauthのライブラリはtm_twitter_apiを使用する。Resourcesフォルダのiphoneフォルダにlibフォルダを作って、oauth.js, oauth_adapter.js, sha1.js, twitter_api.jsをコピー。

oauth_adapter.jsの冒頭を
Ti
.include(path_lib + 'sha1.js'); -> Ti.include('sha1.js');
Ti
.include(path_lib + 'oauth.js'); -> Ti.include('oauth.js'); 

へ変更。もしTwitterの個人設定で"HTTPSを常時使用する"にチェックが入っている場合、twitter_api.jsのhttp://xxxをhttps://xxxに変更する必要がある。

位置情報のPostは上手く行かないけど、米国でのみサービスを提供しているため、日本のアカウントでははじかれるのだろうか。。。


0 件のコメント:

コメントを投稿

Amazon3