Android Studio で Android Virtual Device が動かなかった

# はじめに
自分用の便利Androidアプリがほしーなー。って思い、久々にAndroid Studioをインストール。
実機を接続するのも手間だな。と思い、仮想デバイスを起動してみたらエラーで動かず。

色々ネットサーフィンして、考えて起動できたので、残します。

# エラーメッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206526/b640a02b-d97b-4c5a-9294-79f37d56ca76.png)

```
The emulator process for AVD Small_Phone has terminated.
```
# 対処法
環境変数のPATHに、エミュレータのパスを追加する

・PATH に追加するエミュレータのパス
```
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator
```

# 登場するフォルダ、ファイル
```
C:\Users\ユーザ名\AppData\Local\Google\AndroidStudio2024.3\log\idea.log
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator\emulator.exe
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator\msvcp140.dll
C:\Users\ユーザ名\.android\avd\デバイス名.avd\emu-launch-params.txt
```

# 対処法に辿り着いた流れ
## その１ ググる。
android studio virtual device 起動しない

で検索し、こちらの記事に辿り着く。

https://qiita.com/ciao_kaokawa/items/362bd5ca5b7c498ccd10

ふむふむ、ログがあることを知り、ログを見てみる。

```
C:\Users\ユーザ名\AppData\Local\Google\AndroidStudio2024.3\log\idea.log
```
エラーコードを発見！
1073741515 (0xC0000135)

この時点でQiitaの方とは現象が違っていた。ので、ググりなおす。
```
～中略～
2025-05-06 12:36:45,764 [3844273]   INFO - Emulator: Small Phone - Process finished with exit code -1073741515 (0xC0000135)
2025-05-06 12:36:45,764 [3844273]   WARN - Emulator: Small Phone - Emulator terminated with exit code -1073741515
～中略～
```
## その２ ググりなおす。
以下で雑にググる。
```
Emulator: Small Phone - Process finished with exit code -1073741515 (0xC0000135)
```

StackOverFlowに辿り着く。が、ぱっと見、該当しそうな対処法が見当たらず。

https://stackoverflow.com/questions/71666215/how-can-i-fix-the-emulator-process-for-avd-xxx-has-terminated-error

と思ったら、ほかにもリンクがあるので、たどってみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206526/05255ccc-06a1-4e57-b1b5-38e72177e697.png)


https://stackoverflow.com/questions/67346232/android-emulator-issues-in-new-versions-the-emulator-process-has-terminated

自分と全く同じエラーの方を発見！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206526/5b8c0d4b-06d9-41e8-b586-9e12404dcb02.png)

```
To resolve this issue, add the emulator path to your environment variables. On a Windows PC, the emulator path is typically:

```
環境変数にエミュレーターのパスを追加すればよい。

環境変数に何の変数名で追加すればよいのか、わからん。
今、思えば素直にPATHで良かったと後悔（笑）

## その３ 環境変数に何の変数名で追加すればよいのか、考える。
環境変数を調べてみると、色々出てくる。

https://developer.android.com/tools/variables?hl=ja

気分転換にエミュレーターのパスをのぞいてみると、「emulator.exe」というものを発見！
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator

これはコマンドラインで実行もできるのでは？と思い、実行してみる。

```
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator>emulator.exe
INFO         | Android emulator version 35.3.12.0 (build_id 12990079) (CL:N/A)
INFO         | Graphics backend: gfxstream
ERROR        | No AVD specified. Use '@foo' or '-avd foo' to launch a virtual device named 'foo'
```

ふむふむ、-avd デバイス名 とエラーメッセージから理解し、再実行。で起動することを確認。

```
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator>emulator.exe -avd Small_Phone
```

## その４ 環境変数を忘れて、実行時パラメータが怪しいと考える
コマンドラインで起動することを確認できたので、Android Studioから実行するとなぜ起動できないのか？を考えて、パラメータの差異？と仮説。

実行時パラメータは何だろう。と考え、ホームディレクトリを見てみると、「.android」というフォルダを発見。

```
C:\Users\ユーザ名\.android>
```
更に中身を漁ると「avd」というフォルダを発見し、中身を見るとデバイス名のフォルダ（Small_Phone.avd）を発見！

そして、「emu-launch-params.txt」という如何にもパラメータっぽいファイルを発見し、中身を確認。
（今、再現すると1行目が「C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Android Studio」になるが謎。）

```
C:\Users\ユーザ名
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator\emulator.exe
11
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator\emulator.exe
-netdelay
none
-netspeed
full
-avd
Small_Phone
-qt-hide-window
-grpc-use-token
-idle-grpc-timeout
300
```
上記より、以下のコマンドを作成し実行してみると、実行ができる。し、Android Studio上に表示がされる。
```
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator>emulator.exe -netdelay none -netspeed full -avd Small_Phone -qt-hide-window -grpc-use-token -idle-grpc-timeout 300
```

この時点で、もうコマンドラインで起動して、運用する。でもいいかな。って思い始めましたが。
なんで、Android Studioから実行ができないんだろー。と悩む。

試しに絶対パスでも試してみたが、正常に起動する。
```
C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator>C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Small_Phone -qt-hide-window -grpc-use-token -idle-grpc-timeout 300
```

## その５ 実行しているカレントフォルダを疑う。
もしかして、実行しているカレントフォルダが違う？
と疑う。

で、「emu-launch-params.txt」の１行目のパスはカレントフォルダ？と思い、コマンドラインで「C:\Users\ユーザ名」に移動し、エミュレーターを起動してみる。
```
C:\Users\ゆーざめ\AppData\Local\Android\Sdk\emulator\emulator.exe -netdelay none -netspeed full -avd Small_Phone -qt-hide-window -grpc-use-token -idle-grpc-timeout 300
```

来たー！エラーが来たー！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206526/c3dfc129-1a9c-4e2f-9275-4012787122da.png)

エラーを見るとMSVCP140.dllが見つからないと。

正常に起動できる「C:\Users\ユーザ名\AppData\Local\Android\Sdk\emulator」を見ると、「MSVCP140.dll」がある。

## その６ 環境変数を思いだす。
「MSVCP140.dll」を見つけられるように環境変数のPATHに追加すればよいのでは？と気づく。

あー、環境変数ってPATHに追加すればよいのか。と考える。

## その７ 環境変数に追加
ユーザ環境変数のPATHとシステム環境変数のPATH、どっちに追加すればよいんだ・？
というところで、ユーザ環境変数のPATHに追加してみる。

コマンドラインは、エラーが出なくなった。
Android Studioは、まだエラーが出る。Android Studioを再起動し、再実行するとエラーが出なくなった！
（エラー発生当時はAndroid studioを再起動してもダメで、システム環境変数に追加してPC再起動したらうまくいった。）

# 参考資料
https://developer.android.com/studio/run/emulator-commandline?hl=ja