Stetho는 2015년 페이스북에서 공개한 안드로이드 디버깅 도구다. 크롬 브라우저에 내장된 개발자 도구인 DevTools를 활용해 안드로이드 앱의 네트워크, 데이터베이스, 프리퍼런스, 레이아웃 등을 디버깅 할 수 있다. 더 자세한 기능 소개는 공식 페이지를 참조하자.
네트워크 라이브러리와 연계 동작하는 라이브러리들은 보통 Volley를 지원한다. 하지만, Stetho의 네트워크 디버깅 기능은 앱이 OkHttp나 안드로이드의 HttpUrlConnection를 써야 쓸 수 있다. 환경이 맞다면 좋겠지만, 이미 개발된 앱의 네트워크 라이브러리를 Stetho 쓰자고 바꾸기는 어렵다. 같은 고민인지, 아래처럼 Volly의 RequestQueue 객체 생성 시에 OkHttp 라이브러리의 특정 클래스 객체만 활용하는 우회법을 제안하는 글이 많다.
OkHttpClient client = new OkHttpClient(); client.networkInterceptors().add(new StethoInterceptor()); mRequestQueue = Volley.newRequestQueue(getApplicationContext(), new OkHttpStack(client));
물론 네트워크 라이브러리를 바꾸는 것에 비해 수정은 적지만, 쓰지 않아도 되는 라이브러리를 추가하는건 여전하다. 이 같은 고민을 한다면 포기하기 전에 여기를 살펴보자. Stetho의 UrlConnectionManager를 활용하는 기능이 포함된 StethoVolleyHurlStack 클래스를 제공하여, OkHttp를 사용하지 않고도 Stetho의 네트워크 디버깅을 사용하도록 도와준다.
RequestQueue queue = Volley.newRequestQueue(this, new StethoVolleyHurlStack());
2020년 1월 테스트로는 잘 되지만, 1년 넘게 commit이 없고 pull-request도 처리 안하는 것으로 미루어 보아 유지보수가 중단된 것 같다.
그 밖에
- 데이터베이스, 프리퍼런스, 레이아웃 디버깅과 같은 다른 기능들은 위와 같은 수정 없이 Stetho 라이브러리 적용만으로 쓸 수 있다.
참고
- https://engineering.fb.com/android/android-accessibility-debugging-with-stetho/
- https://engineering.fb.com/android/stetho-a-new-debugging-platform-for-android/
- https://developer.android.com/training/volley/index.html
- http://facebook.github.io/stetho/
- https://github.com/google/volley
- https://square.github.io/okhttp/
- https://github.com/darshan-kapasi/StethoForVolley
- https://stackoverflow.com/questions/32012160/how-to-use-stetho-with-volley