[Android]ユーザー名が日本語でエミュレーターが起動できない時
Windowsユーザー名に日本語が入っているとAndroidエミュレーターが起動できません。むー。もう2010年なんだし全角がどうのとか忘れたいですね。
とにかく、この場合はコマンドラインからエミュレーターを作成する必要があります。コマンドラインを起動し、Android SDKをインストールしたディレクトリで下記のコマンドを実行です。具体的には下記のページが詳しいです。
http://d.hatena.ne.jp/masa-pon/20090417/1239928840
というわけでMIDniteのエミュレーターを作ってみます。
?C:\android-sdk-windows\tools>android create avd -t 7 -n MIDnite -p C:\avd\MIDnite -s WVGA800
-tはターゲットで、7ならAndroid 2.1相当。いっつも思うけどターゲットとAndroidバージョンの対応が実にわかりにくい……
ターゲットは下記が詳しいです。
http://www.javadrive.jp/android/emulator/index1.html
-nはデバイス名。なんでもいいけどスペースが使えないとか多少縛りありますね。[a-z][A-Z][0-9][._-]のみ使えます。
Nationite MIDnite注文済みです。届くの楽しみです。
-pはデータの保存先。このパスが日本語を含むとダメみたいなので、日本語を含まないパスにします。このパスの中にconfig.iniとか作成されます。
-sはスキンですね。MIDniteは解像度が800×480なのでWVGA800にしました。
これで無事作成されれば、下記のようなメッセージが出ます。
Created AVD 'MIDnite' based on Google APIs (Google Inc.), with the following hardware config: w.lcd.density=240 vm.heapSize=24
ディスプレイのdpiが240で、いわゆるHDPIになりました。NexusOneならこれで問題ないですが、MIDniteは7インチ端末なので、MDPIに該当すると思います。なので-pで指定したパスに生成されたconfig.iniを編集する必要があります。単なるテキストファイルですが、改行コードがLFになっているのでメモ帳は避けた方がいいです。hw.lcd.dencityというキーがあるので、
hw.lcd.dencity=160
に修正します。MDPIは160DPIなので。
以上でユーザー名が日本語でも問題なく起動できるエミュレーターの完成です。eclipseからもAndroid SDK and AVD ManagerのVirtual Devicesのリストにちゃんと表示されると思います。
まあでも、AndroidはiPhoneと違って実機に転送するのにプロビジョニングがどうのとか面倒くさい手間はありませんし、そもそも実機に転送するのに年1万円のお布施を要求するようなことはありませんから、基本的には実機でのテストがメインになりますよね。エミュレーターが非常に重いというのもありますし。Z560のVAIO Pでも起動すらできませんでした……
それにしても3.7インチでも5インチでも7インチでも同じように使えるインターフェースって難しいですね。DPとかSPとか解像度非依存の値が使えるので物理的に同じ大きさで表示するのは簡単ですが、例えばリストを表示するのに3.7インチなら画面全体に単一のリストでいいでしょうが、7インチの画面全体にリストだけってのは画面がもったいないし、じゃあ7インチの時は2ペインにするとしても、5インチぐらいだとどうしよう……みたいな。