Android開発をしていて。adb installやadb pushをすることはよくあると思います。それが上手くいかないときの話。
進捗が100%になっているのに終わっていない
事の起こりとしては、adb installでapkをインストールしたときに、表示が100%になってもインストールが始まらないことが多くて困ってしまったことでした。
それでまずはapkファイルだけを転送してみようと思ってadb pushでストレージに入れてみたのですが、こちらも表示は100%になっているのに終わらない。
どういう状況なんだと調べてみたら、adbの表示は100%だけど実際には全然転送終わってなかったのが真相でした。
対策としては終わるまで待つしかない
adb shellでシェルにログインして、pushされているファイルをls -alで表示してみていたら、表示を更新する度にファイルサイズがじわじわ増えていくのですよね。つまり全然転送中だったと…
それでファイルサイズを見張りながら終わるまで待っていたところ、ファイルサイズがapkファイルのそれと一致したところでコンソールのadb pushも正常終了しました。
おそらくadb installで進まなかったのもこういうことなのでしょう…
基本的には待つしかなく、逆にいえば待っていたら終わる話です。
もしadb installで100%から進まなくなってしまったら、一旦adb pushしてから端末のパッケージをインストールしてみるなど、ステップを踏んで確認してみるとわかりやすいです。
(端末に保存されたapkをインストールする方法は「adbおよびAndroidのshellでよく使う操作のメモ」参照)
また転送速度としてはUSB接続では通常考えられないほど遅かったので、何かしらの異常がある場合も考えられます。USBケーブルを交換してみるなどの措置をとってみるのも効果があるかもしれません。
USBケーブルを抜いて差したら早くなった
(2017/09/26追記)
ケーブル交換とかではないです。この現象が発生したときに開発環境の構成として、USBケーブルがUSBハブを経由してPCに接続されていたので、まずUSBケーブルとPCを直で繋いでみました。すると速くなりました。で、次はHUB経由に戻してみました。速いままでした。
よくわかりませんが、接触不良やデバイスドライバ読み込み時の何かとかがあったんでしょうか…
現象が発生してみたら、とりあえず抜き差しとか別のポートに差してみるとか試してみるといいかもしれません。
端末を再起動したら速くなった
(2017/10/03追記)
USB接続ではなくネットワーク越しに接続していたため、disconnect→connectしても治らず、端末を再起動したら治りました。
これほんと、何が原因なんでしょうかね…