Windows環境でTitanium StudioからAndroid エミュレータ起動しようとすると無反応のままタイムアウトになる

出力されてるエラーメッセージは以下のような感じ。

[ERROR]     for avd_props in avd.get_avds(self.sdk):
[ERROR]   File "c:\Users\USER\AppData\Roaming\Titanium\mobilesdk\win32\1.8.0.1\android\avd.py", line 21, in get_avds
[ERROR]     for line in run.run([sdk.get_android(),'list','target'],debug=False).split("\n"):
[ERROR] AttributeError: 'NoneType' object has no attribute 'split'

Tatinum Studioのbuild→runでPython エラー→スタックトレース出力してる感じ。

処理を追ってみた。

まずこの ~/AppData/Roaming/Titanium/mobilesdk/win32/2.1.3.GA/android/avd.py のAVD取得関数 get_avds の中のrun.run の戻り値がNoneになってるから改行で分割できてないっぽい

for line in run.run([sdk.get_android(),'list','target'],debug=False).split("\n"):
    line = line.strip()

run.run で何をしてるかというとAndroid SDKの中のtools/android.bat list コマンドを透過的に実行して標準出力をパースしているっぽい。

コマンドプロントから android.bat list をして確認したら

_JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp -DWindows.controlFont=\"Meiryo UI-plain-11\" -DWindows.menuFont=\"Meiryo UI-plain-12\"

が出力されていた。

tools/android.bat list を実行すると本来有効なSDKバージョンのリストがかえってくるんだけどこのJavaワーニングだかエラーがブロックしてた。

解決法としては_JAVA_OPTIONS 環境変数を削除。

ちなみにこの_JAVA_OPTIONS 環境変数がなんで設定されていたかというとたぶんJava制アプリケーションのフォント表示がおかしかったのか気にくわなかったかで解決したくてどこからかコピペしてたのでしょう(覚えていない)。