エミュレータをコマンドプロンプトから正常に停止できません。
Linux Ubuntu 10.04バージョン(64ビット)を使用しており、Android SDKバージョンは2.3です。
スナップショットを使用してエミュレータを起動しました。次に、実行中のエミュレータのインスタンスを正常にシャットダウンすることが私の関心事です。エミュレータをシャットダウンするkill -9(エミュレータの実行中のプロセスID)を試しましたが、次回はスナップショットが破損したため起動しません。エミュレータの強制シャットダウンを回避するために私を助けてください。
それを修正する方法はありますか?
kill -9
を無差別に使用しないでください。これは非常に悪い習慣です。
正しいコマンドは
$ adb emu kill
あるいは、最近のadb
が変更されるまでは、正しいコマンドでしたと言ったほうがいいでしょう。認証を追加するのを忘れたようです。
最新(2016年6月現在)の最新のadb
バージョンは
$ adb version
Android Debug Bridge version 1.0.36
Revision 0a04cdc4a62f-Android
そしてあなたがしようとすると
$ adb emu kill
何も起こらず、これが理由です
...
connect(3, {sa_family=AF_INET, sin_port=htons(5554),
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
write(3, "kill\nquit\n", 10) = 10
read(3, "\377\373\1", 8192) = 3
read(3, "\377\373\3\377\373\0\377\375\0", 8192) = 9
read(3, "Android Console: Authentication required\r\nAndroid Console: type 'auth <auth_token>' to authenticate\r\nAndroid Console: you can find your <auth_token> in \r\n'/home/diego/.emulator_console_auth_token'\r\nOK\r\n", 8192) = 202
read(3, "k\33[K", 8192) = 4
read(3, "\33[Dki\33[K", 8192) = 8
read(3, "\33[D\33[Dkil\33[K\33[D\33[D\33[Dkill\33[K", 8192) = 28
read(3, "\r\nKO: unknown command, try 'help'\r\n", 8192) = 35
read(3, "q\33[K\33[Dqu\33[K", 8192) = 12
read(3, "\33[D\33[Dqui\33[K\33[D\33[D\33[Dquit\33[K", 8192) = 28
read(3, "\r\n", 8192) = 2
read(3, "", 8192) = 0
close(3) = 0
exit_group(0) = ?
+++ exited with 0 +++
次に、別のソリューションが必要です。
前のコマンドが機能しない場合(一部のユーザーがWindowsについて報告したように)、次のコマンドを試すことができます(次のコマンドで5554はエミュレーターが使用するポートです)。
トークンファイル(~/.emulator_console_auth_token
)の内容をクリップボードにコピーして、Telnetセッション中に貼り付けられるようにします。
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/home/user/.emulator_console_auth_token'
OK
auth <YOUR_TOKEN_HERE>
Android Console: type 'help' for a list of commands
OK
Android console command help:
help|h|? print a list of commands
crash crash the emulator instance
kill kill the emulator instance
quit|exit quit control session
redir manage port redirections
power power related commands
event simulate hardware events
avd control virtual device execution
finger manage emulator fingerprint
geo Geo-location commands
sms SMS related commands
cdma CDMA related commands
gsm GSM related commands
rotate rotate the screen by 90 degrees
try 'help <command>' for command-specific help
OK
次に、コマンドプロンプトでkill
と入力するだけです。
kill
OK: killing emulator, bye bye
Connection closed by foreign Host.
エミュレータが終了します。
しかし、待ってください。もっと良い方法があるはずです。そして実際にあります!
この Gist は、認証トークンを毎回切り取って貼り付ける必要がなく、 expect を使用して自動化されたソリューションを提供します。
お役に立てば幸いです。
私はubuntuで、エミュレータが新しいプロセスを継続的に開く問題を抱えていました。エミュレータを閉じることはできず、応答しませんでした。
htop
を使用しました
Htopでの手順:
Ubuntu 16-04では、ADBバージョン1.0.32を使用して、DockerコンテナーでAndroid 4.4(API 19))のエミュレーターを実行しています。公開されているポートは、コンソール用の30004および30005です。 ADBの場合。
adb connect 0.0.0.0:30005
を実行して接続できます。
エミュレータを強制終了するには、adb -s emulator-30004 emu kill
を使用する必要があります。0.0.0.0:30005
を使用すると、error: no emulator detected
が得られます。