「ほっ」と。キャンペーン

<   2010年 12月 ( 2 )   > この月の画像一覧

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、と言ったところか。
[PR]
by xiaoxia | 2010-12-20 14:08 | ソフトウェア | Comments(0)
注意:公式に用意されているものを適用するわけではないので、
最悪使えなくなる(スマホ界隈では文鎮と表現)ことを覚悟してください。
覚悟のない人はダメ絶対!

画面のキャプ撮りながらやってみたけど、
あとで見てみたらあんまり大した内容じゃなかったんで、
画像入れるのやめた(^^;;

(1) 本体の root を奪取


これをすると保証が受けられなくなる可能性があるので、
自己責任でお願いします。
やり方やツールは、他のページでお調べ下さい。

(2) 以下を参考に、本体の /efs/ のバックアップを取る


[Galaxy S/Tab] /efs/ バックアップのすすめ ≪ Gagdet's Blog
http://gagdet.wordpress.com/2010/11/25/galaxy-stab-efs-%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/
まだあまり使っていない端末なので、結果的にあんまり意味なかった。

(3) レジストリのバックアップを取る


後でレジストリのキーをいじるので、一応。
HKEY_CURRENT_USER\Software\Samsung

(4) アップデートを入れる


Odin3 ではなく、Kies を使用。
もう Odin3 というツール自体、
samsung からはダウンロードが見つけられない。

初めにレジストリのキーをいじるが、
私の場合は HKEY_CURRENT_USER\Software\Samsung\Kies\DeviceDB\ 以下には
1 ~ 5 までディレクトリがあり、
あちこちに該当するキーがあったので全部変更してみたが、
これは正しくなかったようだ。
ある1つのディレクトリ以下の値を変更すべき。
全部揃っているディレクトリは、多分1つしかない。

以下のページを参考にする。
細かいところまで熟読してね!

・Galaxy S 新ファームXXJPCへのアップデート方法|コジーのブログ
http://ameblo.jp/kojiibb/entry-10634841770.html
・ [Galaxy S] Android 2.2 Froyo (I9000XXJPC) を入れてみた ≪ Gagdet's Blog
http://gagdet.wordpress.com/2010/08/31/galaxy-s-android-2-2-froyo-i9000xxjpc-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/

(5) お約束のトラブル:アップデート終了後に起動しない!


ダウンロードからアップデート、起動画面が出るまで数分。
速かったし簡単だった。
ここまでは。

しかしその後がなんか上手く行ってないっぽい。
マナーモードにしてあるので、音は鳴らない代わりにブルッとするのだが、
1-2 分おきに何度もブルッとして10分以上起動しない。
電源ボタン長押しで、工場出荷状態にしてみようとしたが、
やはり起動しない。
戻るボタンなどの電気が消えている様子を見つつ、
電源ボタンを押したり、数分放置したりしてみて、
10分後に GalaxyS という起動画面が出て、ちょっとやれやれ。
しかし、起動画面中も頻繁にブルッとするが、一向に変わらない。
そのうち画面が暗くなっても、戻るボタンは電源が点いたまま、時々ブルッ。
電源ボタン長押しを何度やっても変わらず。
途中、USB ケーブルを外してしまったので、
USB も認識させることができなくなり、
adb shell などが使えない。
どうすんの!
客先の機材なのに!
このまま文鎮!?
マジで滝汗。

(6) リカバリモードで再起動


ああでもないこうでもないといじること小一時間。
ついったーに泣きついたら、
@nagumosan @norahmodel @bekehapi の各氏が助言をくれた。
皆さん本当に有難う(滂沱)
助言の通り、リカバリモードで起動させたら、めでたく再起動。
そしてラッキーなことに、OS も Android 2.2 にバージョンアップされていた!
もう一度最初からやらなくちゃと思っていたのにラッキー。

そして OS の初期状態がドイツ語!?
ドイツ語はまったくわからないので、うろ覚えな感じで初期設定。
WiFi も無事に使えた。
(SIM ロックフリーだから SIM なしなの)
よかったよかった(^-^)

ちなみにプロクシの設定は、
Wi-Fi settings → Menu ボタン → Advanced
から可能。
前みたいに AP の設定からやるわけじゃないので、
一見わかりづらい。
設定画面なのに Menu ボタン押すとか、
I/F おかしいと思う。

本体のスペックで変わったところは、こんな感じ。
I9000XXJM1 → J9000XXJPP
kernel 2.6.29 → 2.6.32.9

XX というのは欧州版という意味だそう。

(おまけ) 教訓


先人のブログは面倒くさがらず細かくちゃんと読むこと
今回助けてもらったように、誰かが困っていたら助けてあげること
[PR]
by xiaoxia | 2010-12-01 18:09 | ソフトウェア | Comments(0)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞