【Android Emulator】【備忘録】System UI isn't respondingが出た時にやったこと

Appiumを使ったテスト自動化で、Android Studioのemulatorを使っています。
ただ、自動テスト実行時に「System UI isn't responding」というエラーメッセージが表示され、テスト失敗するケースが多かったため、その時の対応を備忘録として記録しました。

![Screenshot_1663572386.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/99b53583-098d-5470-5711-89927e22c886.png)


## 注意事項

- この情報は2022年9月19日時点のものです。
- 以下の内容には誤りが含まれる可能性があります。
  - 間違っている部分などがあれば、コメントお願いします。

## 実施環境

|項目|バージョン|
|:--:|:--:|
|OS|Windows 10 pro|
|Android Studio|2021.1|
|Appium Desktop|1.22.2|

## やったこと

### アクセラレーション設定にて、エミュレートパフォーマンスをHardware - GLE2.0に変更する

設定方法は3つあります。

#### 1.AVDの編集画面から変更する

① 対象AVD列にある鉛筆アイコンをクリックします。

![AVD manager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/4ba25d44-6479-f887-352a-43f773944154.png)


② そこにEmulated Performanceにて、AutomaticからHardware - GLE 2.0を選択します。

しかし私の環境では、以下の画面のように設定できませんでした。（グレーアウトになっていました）

![AVD編集画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/6af7a666-7454-ce54-8441-27cc83351495.png)


#### 2.コマンドで実行

以下のadbコマンドを入力すると変更することが出来ます

```adbコマンド.cmd
emulator -avd avd_name -gpu mode [{-option [host]} ... ]
```

#### 3.config.iniから変更

①Device Manager画面を開いて、対象emulator列にある▼ボタンを押す
②Show on Diskを選択
③Config.iniを開く（メモ帳などで）
④"hw.gpu.mode" = autoをhostに変更し、保存する（ピンク枠部分）

![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/e378ffeb-8883-56eb-7eb6-cc9551feab09.png)


この設定を行うと、「System UI isn't responding」の発生確率がぐっと下がりました。


:::note info
デフォルトではEmulated Performance: GraphicsはAuto[^1]が入っていますが、[参考資料](https://computer.sarujincanon.com/2021/08/15/flutter_responding/)によると、これでは最適なレンダリング処理を選択しない場合があるとのことです。
:::

[^1]: コンピュータグラフィックカード/ソフトウェアでグラフィックをエミュレートをグラフィックカードに応じてemulatorが選択する


## 他に試したこと

### emulator内のデータを消去

もともとemulator側のデータがおかしくなっている可能性があるため、一旦データを削除しました。
対象AVDのメニューアイコン（▼ボタン）をクリックして、data wipeを実行するとemulatorのデータを削除できます。

![AVD メインメニュー画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/430a0ed6-62e3-ac9e-e1c4-da4684ff9213.png)


### emulatorを再起動

ずっと起動したままでは、同現象が発生しやすくなるため、再起動しました。
対象AVDのメニューアイコン（▼ボタン）をクリックして、cold boot nowを選択すると再起動します。

![AVD メインメニュー画面 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/2f6255a1-91dc-aafe-2fd5-1339f2ccfeee.png)

![coldbootnow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/ffb0673f-10de-9fe6-e77d-88a264da8398.png)


:::note info
AVD起動のたびに再起動したい場合は、config.iniから
Emulated Performance: Boot option (Advanced)をONにしてください
:::

### emulatorのメモリサイズを増やす

config.iniから設定する
ヒープサイズやRAM等の値を変更できます。
メモリサイズにも可能な範囲で増加することで、発生確率を抑えられた印象です。


![config - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895890/5827dcec-5d3b-1b02-2e9c-09521464efa7.png)


## さいごに

今回はSystem UI isn't respondingの対応一覧を記載しました。
また、Android Studioではまることが出てきたら、記事を書きたいと思います。

## 参考資料

- 【flutter・android開発】system UI isn’t respondingが出る場合の解決方法

https://computer.sarujincanon.com/2021/08/15/flutter_responding/

- Android Studio 仮想デバイスを作成して管理する

https://developer.android.com/studio/run/managing-avds?hl=ja

- Android Emulatorのハードウェアアクセラレーションを設定する

https://developer.android.com/studio/run/emulator-acceleration?hl=ja

- The system ui isn't responding in android emulator (Flutter)

https://stackoverflow.com/questions/63371056/the-system-ui-isnt-responding-in-android-emulator-flutter

- [Solved] The system UI isn’t responding in android emulator (Flutter)

https://fluttercorner.com/the-system-ui-isnt-responding-in-android-emulator-flutter/