Androidエミュレーターが起動しているのに「no device selected」になる
結論:実機と同様に開発者オプションでUSBデバッグを許可する
2022/10/1 Flutter エラー・バグ日記
ずっと悩まされていたが、対処法が見つかったかもしれず、忘れないうちに記録(再現性は不確定)。
突然、Androidエミュレーターが、Android Studioと接続不能になり、プロジェクトをビルドできなくなる現象が、たびたび発生していた(PCは、IntelのMacbook Pro)。
エミュレーター自体は起動できている
エミュレーター自体が起動できない場合の対処法は、ネット上に多数紹介されている。
しかし、自分の場合は、起動はできているのに、Android Studio上部のデバイス欄は「no device selected」になっており、ビルドすると「No Connected Devices Found」のエラーになってしまう、という状況だった(「Refresh」をしても効果なし)。
また、この状態で、再度、同じエミュレーターを起動しようとすると、「もう立ち上がっているよ」というエラー(下記)が出てしまう。
emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature. Please use -read-only flag to enable this feature.
起動できない場合の対処法を一通り試すも、効果なし
試しに、エミュレーターが起動できない時の対処法を複数実行したが、下記の通り、いずれも効果はなかった。
①「Project SDK」を設定する
(自分の過去記事)
既にSDKは設定されており、この対応は不要な状況。
②「エミュレーター名.avd」フォルダ内の3ファイルを削除する
(参考にさせていただいた記事)
隠しフォルダである「.android」フォルダ内の「avd/エミュレーター名.avd」内にある下記3ファイルを削除するという方法。
cache.img
hardware-qemu.ini.lock
multiinstance.lock
確かに、エミュレーターを起動できなかったときは、この方法で解決できた。
しかし、起動後の非接続状態については、この方法では解決できなかった。
③「advancedFeatures.ini」を配置する
(参考にさせていただいた記事)
「.android」フォルダ内に、
Vulkan = off
GLDirectMem = on
を記載した「advancedFeatures.ini」ファイルを配置するというもの(全く意味はわかっていないが、、)。
しかし、これも効果はなかった(記事によると、この方法はWindows用?)。
④上記①に加え、「cache.img.qcow2」を削除する
(参考にさせていただいた記事)
これもやったが効果は得られず。。
やむを得ず、いつも「Wipe Data」していた
「Device Manager」(以前の「AVD Manager」)を開き、該当のエミュレーターの設定ボタン(3点マークのボタン)から、「Wipe Data」(データ消去)し、再起動すれば解消する。
これをやると、エミュレーター内に保存していたアプリのデータ(デモ用のデータや、Googleサインインの情報、日本語設定等)が全て消去されてしまうので、正直やりたくない。
しかし、ネット上を調べても、「起動できるが、接続認識されない」状況への対処法は見つけられず、、、仕方なく、この方法で対処していた。
USBデバッグ許可の確認ダイアログに気づいた
今回も諦めて「Wipe Data」をやりかけたところ、エミュレーター内に、一瞬、USBデバッグ許可の確認ダイアログが表示された事に気づいた(すぐ消えてしまったが)。
これは、Android実機をAndroid Studioにつないだ時に、毎回出るダイアログで、許可(OK)のボタンを押さないと、Android Studioで実機が認識されない。
ただ、このダイアログが消えてしまうときがあり、その際は、実機の設定を変更して対処していた。
そこで、今回、それと同様の対応を、エミュレーターでやってみることにした。
具体的な手順は下図のとおり。
開発者向けオプションを有効にし、USBデバッグをONにするのだが、もともとONになっていた場合は、いったんOFFにしてから、再度ONにする。
こうすることで、再度、USBデバッグ許可の確認ダイアログを表示させることができる(もっと良い方法がありそうだが、、)。
結果、この方法でUSBデバッグを許可したら、無事、エミュレーターが認識され、ビルドできるようになった!
今回はこれで解決できたが、接続不良が発生するタイミングが不明なので、再現性があるかは不明。。。
次に発生したときは、真っ先に今回の方法を試してみることにする。
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/