先日、AVD Managerのエミュレーターを使って、開発したアプリをインストールしようとしたところ、1つしかデバイスを接続していないのに「error: more than one device/emulator」のエラーが出てしまいました。
今回は、デバイスを複数起動していない時にこのエラーが出てしまった時の対処法を紹介します。
はじめに
過去にこちらの記事で紹介している「error: more than one device/emulator」の対処法は「エミュレーター」と「実機」を同時に接続していた事が原因でした。
今回はそうではありません。
実機を接続せずに、エミュレーターを1つだけ起動しているにもかかわらずこのエラーが出ています。
そういった時は、アプリをインストールする時と同じように「adb」コマンドを使う事で解決できましたので説明していきます。
error: more than one device/emulatorとは
まず
error: more than one device/emulator
とはどのようなエラーなのか説明します。
読んで字のごとくなのですが、「1つ以上のデバイス、またはエミュレーターが存在します」というエラーになっています。
つまりデバイス(実機)かエミュレーターを同時に起動(接続)してしまっている時に発生するエラーですね。
このエラーが発生していると「- waiting for device -」という表示が呼ばれ続けるので焦りますが、エミュレーターにアプリをインストールしたい場合は実機と接続しているケーブルを抜けば良いだけです。
ですが今回のような場合、このようにはいきませんよね。
では解決方法を見ていきましょう。
接続しているデバイスの確認
エミュレーターを1つしか起動していないのにこのエラーが発生する時は、裏でエミュレーターが1つ余計に起動している可能性があります。
裏で生きているエミュレーターを確認する時は、「ターミナル」からadbコマンドを入力すると確認する事ができます。以下のように記述してみてください。
adb devices
このような命令を実行する事で「現在起動しているエミュレーターを確認する」事が出来ます。
本来であれば、このように接続されているデバイス名は1つだけ表示されるはずです。
ですが私の場合
- List of devices attached
- emulator-5554 device
- emulator-5556 offline
というように表示されました。
つまり、PC上では確認できないエミュレーターが存在しているという事になります。
ですので、エミュレーターを終了させる事ができません。
ではどのように終了させたら良いか説明します。
エミュレーターを終了させる
今回のエラーはPCを再起動させる事で解決するかもしれませんが、adb コードからエミュレーターを終了させる事もできます。
adbから終了させると再起動する時間を省略でき、すぐに結果を確認できますのでおすすめです。
では以下のように記述してみてください。
adb emu kill
このようにする事で、offlineになっているエミュレーターを終了させる事ができました。
もし、adb emu killを入力して「error: more than one emulator detected; use -s」と表示されてしまった場合は以下の命令を試してみてください。
adb kill-server
adb start-server
「kill-server」でサーバーとの接続を解除し、「start-server」で接続しなおすようにしています。
このようにすることでofflineになっているデバイスが消えると思います。
終了を確認
最後にエミュレーターが正しく終了できたかを確認しましょう。
adb install アプリ名.apkなどで実行してた時に「error: more than one device/emulator」が出なければ成功です。
あとはアプリをインストールなりしてみてください。
まとめ
今回の方法を使えば、確認できないけれど存在するエミュレーターを「adb」から終了させる事ができました。
adbコマンドを覚えておくと、よく分からないエラーが発生した時に「何が起きているのか」を確認しやすくなります。
ぜひ覚えてみてください。
ではまた。