はじめに
Android 開発について勉強してみようと思って、Windows 10 に Android Studio をインストールしたのですが、使い始めた途端にハマってしまったので、記事にしておきます。
※ こんなハマり方する人はほとんどいないと思いますが。
環境
今回のエラーは、バージョンあんまり関係ないと思いますが念のため。
- Windows 10 Pro
- Android Studio 4.0
- Build #AI-193.6911.18.40.6514223, built on May 21, 2020
- Runtime version: 1.8.0_242-release-1644-b01 amd64
- VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Android Virtual Device Manager の実行エラー
1. Android Studio 4.0 を普通にインストール
エラーも特になく、インストール完了。
2. Android Studio でプロジェクトを新規作成
エラーなく、普通にひな形プロジェクトができる。
3. AVD Manager を起動し、Virtual Device を作成
- device definition : Nexus 6P を選択
- System Image : MarshMallow (API Level 23) を選択
- あとはデフォルトで Finish
という感じで、普通に Virtual Device を作って、再生ボタンで実行したのですが、次のエラーメッセージが出て、即落ちしてしまいました。
"The emulator process for AVD Nexus_6P_API_23 was killed"
実行した途端にプロセス殺されましたって・・・
調査
エラー内容もログも分からないので、とりあえず Virtual Device 作成の設定を色々変えてみましたが、すべて即落ち。ネットで調べてみると、「Intel x86 Emulator Accelerator(HAXM) を再インストールしたら」とか「OSのグラフィックドライバを最新に」とか「Oracle Virtual Boxのプロセスが云々」とか色々情報が上がっていたので、SDK Manager から HAXM の再インストール、グラフィックドライバの更新、Oracle Virtual Box のプロセスを探して全てKill してみたりしてみたのですが、全て変化無し。
エラーの内容も分からず、ログがどこに出てるのかも分からず途方に暮れていたところ、ネットで似たような質問をしている人の中に、コマンドプロンプトから emulator.exe を実行するやり方をしている人がいたので、これならエラーが表示されるかも、と思ってやってみると、(※コマンドプロンプトなのでパスの接続文字は¥マークです。)
C:\Java\Android_SDK\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_6P_API_23
emulator: ERROR: bad config: virtual device file lacks a path entry
emulator: could not find virtual device named 'Nexus_6P_API_23'
ん?パスが欠けてる?virtual device が見つからない?SDKのパスもちゃんと通してるのになんで?
作成した virtual device 関連のファイルは、Windows のユーザーフォルダにありました。
%USERPROFILE%\.android\avd\Nexus_6P_API_23\
%USERPROFILE%\.android\avd\Nexus_6P_API_23.ini
iniファイルがあったので、それを開いてみると。
avd.ini.encoding=UTF-8
path=C:\Users\縺セ繧構.android\avd\Nexus_6P_API_23.avd
path.rel=avd\Nexus_6P_API_23.avd
target=android-23
うぁぁぁぁ、こいつのせいかぁぁあぁあっっっ!!!
原因
Windows ユーザーのユーザーフォルダパスに2バイト文字が含まれているのが原因でした。Windows 10 は、ユーザー名を日本語で作ることができ、そうするとユーザーフォルダも日本語で作られてしまいます。
iniファイル自体は UTF-8 の文字コードになっていて、さっき文字化けしていたiniファイルも UTF-8 で開き直すと、正しく表示されます。おそらく Virtual Device の実行過程のどこかでちゃんと読み込めなかったんでしょう。
解決方法
別の英字ユーザーを作って、そちらで実行したところ、すんなりと Virtual Device の実行ができました。
・・・どっと疲れた・・・
いいわけ
いつもはユーザー名は普通に記号以外のASCII文字しか使わないんですが、導入しようとしていたパソコンはプライベート用に数年前に買ったものでして。初期セットアップしてたら、あれ?ユーザー名日本語使えるんだ~、じゃあ日本語名にしちゃお、別にこのパソコンで何か仕事するつもりもないし、と軽く考えてしまいました。
最近の Windows 10 の初期セットアップでは、ユーザー名に日本語を入れようとすると「アプリでトラブルあるかもよ」的な警告が出たような気がします。ネットで 「Windows ユーザー 日本語」で検索すると、「ユーザー名に日本語使うなよー」という記事がわんさか出てきます。
なら・・・そもそも日本語名でユーザー作れないようにしてくれよ・・・Microsoftさん・・・
と心の底から思います。