クリアメモリ

プログラミングやモーショングラフィックス、便利なアプリケーションなど雑多に記録するブログ

デバイスを1つしか接続していないのにerror: more than one device/emulatorが出る

f:id:clrmemory:20170422174741p:plain 

先日、AVD Managerのエミュレーターを使って、開発したアプリをインストールしようとしたところ、1つしかデバイスを接続していないのに「error: more than one device/emulator」のエラーが出てしまいました。

 

今回は、デバイスを複数起動していない時にこのエラーが出てしまった時の対処法を紹介します。

 

 

はじめに

 

https://clrmemory.com/android/error-avd-manager/ 過去にこちらの記事で紹介している「error: more than one device/emulator」の対処法は「エミュレーター」と「実機」を同時に接続していた事が原因でした。

 

 

今回はそうではありません。

実機を接続せずに、エミュレーターを1つだけ起動しているにもかかわらずこのエラーが出ています。

 

そういった時は、アプリをインストールする時と同じように「adb」コマンドを使う事で解決できましたので説明していきます。

 

error: more than one device/emulatorとは

 

まず

 

error: more than one device/emulator

 

とはどのようなエラーなのか説明します。

 

 

読んで字のごとくなのですが、「1つ以上のデバイス、またはエミュレーターが存在します」というエラーになっています。

 

つまりデバイス(実機)かエミュレーターを同時に起動(接続)してしまっている時に発生するエラーですね。

 

 

このエラーが発生していると「- waiting for device -」という表示が呼ばれ続けるので焦りますが、エミュレーターにアプリをインストールしたい場合は実機と接続しているケーブルを抜けば良いだけです。

 

スクリーンショット 2016-05-10 7.11.25

 

 

ですが今回のような場合、このようにはいきませんよね。では解決方法を見ていきましょう。

 

接続しているデバイスの確認

 

エミュレーターを1つしか起動していないのにこのエラーが発生する時は、裏でエミュレーターが1つ余計に起動している可能性があります。

 

裏で生きているエミュレーターを確認する時は、「ターミナル」からadbコマンドを入力すると確認する事ができます。以下のように記述してみてください。

 

 

adb devices

 

 

このような命令を実行する事で「現在起動しているエミュレーターを確認する」事が出来ます。

 

 

スクリーンショット 2016-05-10 6.49.35

 

 

本来であれば、このように接続されているデバイス名は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コマンドを覚えておくと、よく分からないエラーが発生した時に「何が起きているのか」を確認しやすくなります。

 

是非覚えてみてください。

ではまた。