LinuxにSDKをインストールしました。昨年アンドロイドの仕事をしていたので、以前は使っていましたが、当時はツールに問題はありませんでした。
ただし、現在のインストールではエミュレーターにインストールされません。 avd
が起動され、エミュレーターが実行されています。
> adb devices
List of devices attached
emulator-5554 device
> adb install blahblah.apk
error: protocol fault (no status)
- waiting for device -
私はそれを殺すまでハングアップします。それで:
> adb devices
List of devices attached
> adb kill-server
> adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
> adb devices
List of devices attached
emulator-5554 device
> adb -s emulator-5554 install blahblah.adk
error: protocol fault (no status)
- waiting for device -
通常のユーザーおよびルートとして、これを十数回経験したに違いありません。この Q&Aを読んで、onで同じことを試してみADB_TRACE
ました。これにより、サーバーを強制終了して再起動するときに奇妙な違いが生じました。
> adb start-server
system/core/adb/adb.c::main():Handling commandline()
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:version
system/core/adb/adb_client.c::adb_connect():adb_connect: service host:start-server
* daemon not running. starting it now on port 5037 *
ADB server didn't ACK
* failed to start daemon *
トレースをオンにしないと、常に「デーモンが正常に開始されました」になります。しかし、その後adb devices
のエミュレータは再び表示されます。今すぐ試しadb install
てみると、大量のデバッグ出力が生成され、「エラー: プロトコル障害 (ステータスなし)」の直前に:
system/core/adb/transport.c::readx():readx: fd=3 disconnected
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd -1
error: protocol fault (no status)
次に、「デバイスを待機中」の前に:
system/core/adb/transport.c::readx():readx: fd=3 wanted=4 got=4
4641494c FAIL
system/core/adb/transport.c::readx():readx: fd=3 wanted=4
system/core/adb/transport.c::readx():readx: fd=3 wanted=4 got=4
30303130 0010
system/core/adb/transport.c::readx():readx: fd=3 wanted=16
system/core/adb/transport.c::readx():readx: fd=3 wanted=16 got=16
646576696365206e6f7420666f756e64 device not found
system/core/adb/adb_client.c::switch_socket_transport():Switch transport failed
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd -1
オンラインで同様のレポートは見つかりませんでした。