LoginSignup
4
4

More than 5 years have passed since last update.

Retrofit 1.9未満だとStethoを使えないので注意

Posted at

まさに聴診器のようにアプリを診察できるStethoがよさそうだったので手を出してみたら変なところでハマったのでメモしておきます。

Stethoのわかりやすい紹介はこちら ⇒ StethoでAndroidのNetwork Performanceを見る

現象

上の紹介の通りにbuild.gradleに記述してApplicationクラスで初期化するとビルドは通りますが、実行時に通信エラーになります。

W/System.err﹕ java.io.IOException: Address already in use
W/System.err﹕ at android.net.LocalSocketImpl.bindLocal(Native Method)
W/System.err﹕ at android.net.LocalSocketImpl.bind(LocalSocketImpl.java:303)
W/System.err﹕ at android.net.LocalServerSocket.(LocalServerSocket.java:52)
W/System.err﹕ at com.facebook.stetho.server.LocalSocketHttpServer.bindToSocket(LocalSocketHttpServer.java:278)
W/System.err﹕ at com.facebook.stetho.server.LocalSocketHttpServer.listenOnAddress(LocalSocketHttpServer.java:138)
W/System.err﹕ at com.facebook.stetho.server.LocalSocketHttpServer.run(LocalSocketHttpServer.java:134)
W/System.err﹕ at com.facebook.stetho.Stetho$1.run(Stetho.java:80)
E/stetho﹕ Could not bind to socket.

原因

タイトルの通りで、 Retrofit 1.9未満だと使えない って話です。
古いバージョンだとokhttpのInterceptorに対応しておらず、初期化時にStethoInterceptorを追加すると動かなくなるらしいです。

OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor()); // ⇦ ココ

なので、Retrofitを1.9以上に、できれば最新まであげれば解決します。
ライブラリは定期的にアップデートしていくようにしないとダメですね。

以上です。

参考 : https://github.com/facebook/stetho/issues/36

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4