はじめに
AndroidStudioでProfilerがあり、そこでNetworkの通信内容を見ることが可能ですが、業務でAirWatchに対応した際に実機でProfiling出来なくなってしまったので如何に通信内容を調べようかと思案していた。
パケットキャプチャ出来ればいいんですが、社内のソフト管理が厳しく申請通すのがひどくめんどくさく時間を要するので何かいいのがないかなーと調べていたところ、Stethoを見つけて使ってみたのでその時の記録を残すものである。
環境
Mac Catalina
Stethoとは
一時期仮想通貨でニュースを賑わせていたFacebookが公開しているオープンソースなライブラリ。
ライセンスはBSDなので厳しくない。
パースしている内容はChromeで見る。
今回はNetworkだけをターゲットにしているけどRealmとかViewのヒエラルキーとか色々見ることが可能。
同じようなライブラリでFlipperなるものもあるけどFlipperのアプリをPCに入れる必要がある。
ちなみにFlipperは昔Sonarって名前だったみたいです。(DAWと被ってややこしいから名前変わったのかな)
Stethoリンク
Flipperリンク
導入
まずはapp/build.gradleのdependenciesに追記するところから。
dependencies {
implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
}
これで一回gradleビルドしておく。
成功したらApplicationクラスを継承したクラス(ここではAppクラスとしておく)のonCreate()でStethoの初期化を行う。
class App: Application {
override onCreate() {
super.onCreate()
Stetho.initializeWithDefaults(this)
}
}
あとは通信時にOkHttp3のClientのInterceptorにStethoのInterceptorを追加してあげれば準備OK。
OkHttpClient.Builder()
.addNetworkInterceptor(StethoInterceptor())
.build()
通信内容を見たい時はあらかじめChromeのDev Toolを起動しておいて対象端末のアプリのパッケージ名の下に表示されているInspectをクリックしてあげればOK。
おわりに
AndroidStudioのProfilerが使えれば便利なんですけどね。
そうもいかない時にはこういうライブラリを使うしかないですね。
もしAirWatch対応してても実機でAndroidStudioのProfilerが使える方法があれば教えてほしい。