Titaniumの最近のブログ記事

Titanium.DatabaseはローカルなSQLiteを使ってデータを保管できる非常に簡単なAPIですが、SQLを直に書かないといけないのが些か面倒です。

かと言ってORM的な仕組みを構築するというのもオーバー過ぎる事が多いです。

保存するデータがHash形式のObjectに格納されているとしてCoffeeScriptであれば、こんな感じでUPDATE文を簡単に実装することができます。

例えばデータとして次の様なオブジェクトが存在した場合

まずは、SET句を作ります。

続いて仮パラメータにセットする値の配列を作ります。
UPDATE文なのでWHERE句にプライマリキー(id)を指定するため、最後にid項目も追加します。

あとは連結してUPDATE文に仕立て上げるだけです。

文字列連結だけで生成するよりも気持ちいいですね!

タイトルの件、ずっと前から使えないのは知っていたのだけど、TitaniumはiPhoneでしか試してなかったしiPhoneだけ出来ればいいやとずっと思ってたのでスルーしてました。

しかし最近、会社からAndroid端末(L-04C)が配布されたのもあって、さーてAndroidもやっちゃうぞ〜と思って調べ始めたのですが分からない...

ググっても「SDKのパス指定が間違ってんじゃん?」とか「SDKパッケージをインストールしてないんじゃん?」とかしか見つからず。

唯一、「Titanium Android:SDKがずっとLoadingまたは、ScreenがLoadingのまま->解決」これか!?という対応方法を見つけて色めき立ったわけですが、~/AppData/Roaming/Titanium なんてディレクトリ見つからないす...

かなり長い間、途方にくれていたのですがコンパイル時(Launchボタン押したとき)不可解なエラーメッセージが出ているのを発見。

[INFO] Building KitchenSink for Android ... one moment
[ERROR] JDK version Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8

バージョン? _JAVA_OPTIONS が??

そこで、ハッと閃いたのです。

OSXのJavaは何も指定しない場合のfile.encodingがShift_JISになっているらしく、Scalaのコンソールでいろいろ試したりするときにイラっとするのです。

1年前くらいに行ったScalaの勉強会で ~/.MacOSX/environment.plist にfile.encodingの指定をしておけば常に使われるので便利というのを教えてもらって設定してました。どうせUTF-8しか使わないし。

なのでjavaコマンドにバージョンを聞いてみると

$ java -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)

と、返ってくる。普通は _JAVA_OPTIONS の行はない。TitaniumはJavaのバージョンチェックにこの出力の1行目を使っているのに違いない!

~/.MacOSX/environment.plist から _JAVA_OPTIONS の設定を削除し、ログオフ&ログイン。
Titanium Developerを起動してみると...

で、出た!

titanium_android_select_sdk.png

_JAVA_OPTIONS="-Dfile.encoding=UTF-8"が付いてないとScalaで不便なので ~/.bash_profile で設定することにしました。
Titanium DeveloperはQuickSilverから起動するので影響を受けなくてウマー

ちなみに現在プレビュー版のTitanium Studioも同様でした。

バナー原稿 120×600 (111001)imp

このアーカイブについて

このページには、過去に書かれたブログ記事のうちTitaniumカテゴリに属しているものが含まれています。

前のカテゴリはTipsです。

次のカテゴリはToolsです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。