2011年9月5日月曜日

Titanium Studio で Android 開発開始 その3


Titanium Studioでエミュレーターが起動しない件の続き。
前回は強引に起動しておくという方法をお伝えしたが、実にまっとうなやり方で解決している人がいたので紹介。

WinでTitanium Studio

素晴らしいよ。コピペプログラマとは違うよ。
早速コピる俺。

Android Emuratorの引数にスペースの入ったパスが含まれている場合、このスペースが引数の区切りとして解釈されるためこんな引数しらねーよ!(意訳)と怒られた結果、エミュレータが起動しないからです。
幸いにもエミュレータに渡す引数の構築はPythonのスクリプトでやっているようなので、さくっとfixします。

ふむふむ、なるほど。・・・そんなエラー出てたっけ。すら分かってない俺。

書き換えるスクリプトは
%ALLUSERSPROFILE%\Application Data\Titanium\mobilesdk\win32\1.7.2\android\builder.py
です。環境変数やTitanium SDKのバージョンは適当に読み替えてください。
私の環境では %ALLUSERSPROFILE% は C:\Documents and Settings\All Users に展開されました

俺の環境では、%ALLUSERSPROFILE% ではなく、ユーザー名/Application Data だった。

このスクリプトの393行目あたりでエミュレータの引数を構築しています。

いよいよ。

# start the emulator
emulator_cmd = [
    self.sdk.get_emulator(),
    '-avd',
    avd_name,
    '-port',
    '5560',
    '-sdcard',
    self.sdcard,    # この行を書き換える
    '-logcat',
    '*:d,*',
    '-no-boot-anim',
    '-partition-size',
    '128' # in between nexusone and droid
]

なるほどなるほど。

上で示した行のコードを '"%s"' % self.sdcard に書き換えます。
書き換えるとこんな感じ

# start the emulator
emulator_cmd = [
    self.sdk.get_emulator(),
    '-avd',
    avd_name,
    '-port',
    '5560',
    '-sdcard',
    '"%s"' % self.sdcard,    # self.sdcard から書き換えた
    '-logcat',
    '*:d,*',
    '-no-boot-anim',
    '-partition-size',
    '128' # in between nexusone and droid
]

簡単・・・

まあパスをダブルクオートしただけです。
なお、ためしに self.sdcard にパスを代入する段階でクオートしたところ別の場所でこけるようになってしまったので、エミュレータの引数を構築するこの段階でクオートするのが正解のようです。

へーなるほどねー。かっこいい。
実際にやってみると・・・
すげー 起動したー。なんか嬉しい。
stackboxさんありがとうーーー!

が、起動して喜んだのもつかの間、またエラーでてる。

OperationalError: unable to open database file

どうもこことかによれば、ウイルスソフト停止したらいけたということなのでやってみると、すんなり消えた。

都度ウイルスソフト停止すんのもめんどいけど、まぁいっか。
もう眠いしな・・・

免責
この記事やプログラムによって生じた事故・損害などは一切保証致しません。ご自身の責任でご使用ください。

子育てブログ「おとう日記」はじめました。
興味ある方、是非ご覧下さい!
おとう日記

コピペプログラマの倉庫を作りました。
サンプルプログラムなど置いておきますのでお立ち寄り下さい。
コピペプログラマ倉庫


良ければ↓投票お願いします↓ m(._.)m ペコッ
人気ブログランキングへ

0 件のコメント:

コメントを投稿