人気ブログランキング | 話題のタグを見る

Windows で Titanium を使う

はじめに


HTML と javascript でアプリをサクッ!と作ろうというのが
最近ネットの一部でちょっとアツくなっていた。
特に Titanium というソフトを使うのが
メインストリームだったのだが、
インストール後がどうにも動かず、泣く泣く諦めた。
で、似たようなソフトで PhoneGap というのがあるので、
先日 PhoneGap の試用について書いた。
女プログラマってどうよ? : PhoneGap について

Titanium は、インストールの後はログインが必要なのだけど、
オフラインになってしまい、
接続できないというエラーになっていた。
「無線なら上手くいった」とか
「Macなら大丈夫」とかいうブログ記事を読み、
proxy 越しの接続に問題があるのだと考えていた。
しかし、Titanium の中の人エンジニアは
FAQ でも「proxy 設定したらいいよ」しか言わず、
接続できない人たちはやっぱり接続できなくて
途方にくれている、という状態だった。
私もそこで Titanium は諦めて PhoneGap にした。

インストールできた!


12/15 に Titanium バージョンアップのお知らせが来た。
では最新版では直っておるかと思い、使ってみた。
当初、普通にインストールしただけでは前版と同じ状態で、
ログインできない。

バージョンがあがったことで、
また新しい FAQ が出てないかなーと見たところ、
以下で、解決方法を発見した。
#332 Unable To Package - Titanium Desktop - appcelerator

Titanium をインストールした先の
Resources/js/index.js の 939 行目付近の以下の部分を
まるっとコメントアウトしろと。
// if offline, don't attempt
if (Titanium.Network.online == false)
{
$('#tiui_cloud_on').css('display','none');
$('#tiui_cloud_off').css('display','inline');
if (typeof(fCallback) == 'function')
{
fCallback({offline:true});
}
return;
}

これで本当に直ってしまった。
ちゃんとログインできた。
ツボは、
  右下のネットワーク接続を示すアイコンは「オフライン」になるが、
  そんなのキニシナイでログインを強行する
ということ(笑)

ログイン後、起動すると右上に「新しいバージョンがあるよ!」が出るかも。
出たら適用しておく。

下ごしらえ


java SDK、Android SDK などは導入済みという前提で。

Android SDK を設定


左上 Perspectives から、一番右をクリックして出てきた画面で設定

環境変数 JAVA_HOME の設定


最初の設定はこんな感じ
変更前の設定
  JAVA_HOME = C:\Program Files\eclipse\eclipse\jre\bin
  PATH = .....;%JAVA_HOME%;...

ところがこれだとエミュレータで実行しようとするとエラーになる。
[ERROR] Required jarsigner not found
[ERROR] Required javac not found
[ERROR] Required java not found
[ERROR] One or more required files not found - please check your JAVA_HOME environment variable

以下が、修正してうまく行った設定
変更後の設定
  JAVA_HOME = C:\Program Files\eclipse\jre1.6
  PATH = .....;%JAVA_HOME%\bin;...

JAVA_HOME から bin を除いて、PATH の方には bin を入れる。

環境変数 ANDROID_HOME の設定


以下のページを参考に 環境変数 ANDROID_HOME を設定。
Titanium Mobile 開発環境構築 on Windows XP - どぅーちゅいむーにー
aapt というコマンドがあるところにもパスを通すため。

作ってみる


作り方は、以下の方法でOK。
HTML+JavaScriptでiPhone/Androidアプリを作れるTitanium Mobileとは(2/3)- @IT
上の記事で、現在は Kitchen Sink のリンクが変わっている。
appcelerator/KitchenSink - GitHub
「Downloads」をぽちって、zip をダウンロードしておく。

KitchenSink を試す前にまず、新しいプロジェクトを作って、
すぐ「Launch」してみるのが良いと思う。
プレーンな状態で実行しておくと
環境に問題がないかどうかがわかる。

KitchenSink は何ができるかというデモのプロジェクト。
これを流用すれば、ほとんどのアプリはできちゃうのではないかと思う。
環境に問題がないことが確認できたら、
KitchenSink を動かしてみるのが良い。
先ほどダウンロードした zip を解凍し、
新規にプロジェクトを作って、
その Resource 以下を上書きするのが良いらしい(以下参照)。
もぎっちゃうぞもぎ私的メモ:Titanium:サンプルプログラムKitchenSinkが実機に転送できないー>解決

Tips


デモを動かしたり、こんにちわ世界をしてみただけだけど。

■コンパイル中に Titanium のコンソールにエラーが表示される
[ERROR] Failed installing jp.co.ntt: Can't dispatch DDM chunk 46454154: no handler defined

SDK は「APIs」と付いているものを選択したら直った。
理由は相変わらずよくわからない。
SDK を変更する場合は、
タスクマネージャから adb のプロセスを終了してから
エミュレータを起動する。

■エミュレータの設定は自動登録されるみたい
Launch をぽちるとエミュレータが起動するが、
起動したものは自動的に SDK マネージャに登録されるようだ。
ロケールや proxy を毎回設定しなくても大丈夫。
しかし PhoneGap を使っていたときの設定は使えないようだ。
そっちを起動していても、Launch すると別なのが起動してしまうか、
もしくは、既に起動してますよエラーになる。

■最終手段はクリーンビルド
直したはずなのにまたエラーが出る。
そんなときはクリーンビルドしてみる。
しかしそんなメニューはないので、
%Titanium%\project\build\android 以下を手動でがっつり削除。
古典的手法ながらかなり有効。

感想


■動作が超速い!
もう PhoneGap とは比較にならないほどサクサク!
あんまりにも違うのでびっくりした。

■コンパイル時間も転送時間も長い?
ネイティブコードにコンパイルするためか、
一番最初はエミュレータで実行するにもえらい時間がかかる。

■エミュレータの起動が遅い?
Android のエミュレータは遅いと評判だが、
Launch から起動すると更に遅い感じがする?

■省電力?
エミュレータをLaunch から起動すると、
すぐに休止モード画面になってしまう?
SDK マネージャから動かすとヘイキなのに。

■デバッグの方法?
PhoneGap はほぼ web アプリだったので、
web ブラウザでデバッグできたが、
Titanium は「なんかおかしいので終了します」というアラートが出るのみ。
Titanium のコンソールを「Info」にしてあるのに、全然情報出ない。
どこが悪いのかわからず、デバッグしづらい。
そのうち「Sorry!なんて謝るなよ!何があったか教えろよ!」と立腹(笑

■■まとめ
PhoneGap と比べてどうかという話であれば、一長一短だろうか。
ありきたりの感想だけど。
私には、独自 API 仕様を覚えなくちゃならないのは面倒くさい。
でも、動作のサクサクっぷりは本当にびっくりする。
開発のしやすさは PhoneGap、
動作のうつくしさは Titanium Mobile、と言ったところか。
by xiaoxia | 2010-12-20 14:08 | ソフトウェア
<< 明けましておめでとうございます GalaxyS 欧州版 を A... >>