Stetho '스테토'
Facebook에서 만든 안드로이드 개발을 위한 디버깅 플랫폼
DB / REST API를 더 이상 로그(Log)찍어서 확인하지 말자
DB / REST API를 더 이상 로그(Log)찍어서 확인하지 말자
Facebook의 'Stetho' - 디버깅 플랫폼
- 크롬(Chrome) 브라우저의 개발툴(Developer Tool)을 사용
- 값 / 상태 등을 로그(Log)보다 직관적으로 보기 쉽게 편리하게 확인이 가능
기능
- Network '네트워크'
: HttpUrlConnection / Retrofit / Okhttp를 통해 API 서버와 REST 통신요청(Request) 및 응답(Response)의 Header / Body / URL / Parameter 등 통신의 전반적 상태/결과를 자세하게 직관적으로 확인이 가능 - Database '데이터베이스'
: SQLite - DB값을 에뮬레이터인 경우는 DDMS로 확인이 가능, 하지만 실제 디바이스는 확인이 불가능
SharedPreference - 쿠키 / 기타(기본 자료형) 값을 로그(Log)로 찍어서 확인하는 것 외에는 확인 불가
Stetho는 이러한 SQLite / SharedPreference의 값들을 조회 / 쿼리(Query)를 통한 값 수정이 가능하게 함 - Layout '레이아웃'
: Layout XML이 화면에 보여질때 값들을 확인 가능 (Layout 설정 Width / Hight / Text 등)
- Dumpapp
: 익숙한 UI 방식이 아닌 커멘드 라인(Command) 입력 방식으로 값 조회 / 수정
- JavaScript Console '콘솔'
: Chome 콘솔창에서 자바스크립트 명령 입력이 가능
1. Gradle 추가
- 기본 Gradle 라이브러리
// Stetho 기본 라이브러리
implementation 'com.facebook.stetho:stetho:1.5.1'
- 네트워크 기능 사용시 라이브러리 - 사용할 Network 타입에 맞게 추가
// Okhttp3 라이브러리
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
// Okhttp 라이브러리
implementation 'com.facebook.stetho:stetho-okhttp:1.5.1'
// UrlConnection 라이브러리
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
2. Stetho 설정
- onCreate() 내부 Stetho 설정
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Stetho 설정
Stetho.initializeWithDefaults(this);
}
- Network(네트워크) 설정
OkHttpClient client = new OkHttpClient.Builder()
// OkhttpClient 인스턴스에 Stetho Network 인터셉터 등록
.addNetworkInterceptor(new StethoInterceptor())
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://openapi.airkorea.or.kr/")
.addConverterFactory(ScalarsConverterFactory.create())
// Stetho 인터셉터를 등록한 OkhttpClient를 Retrofit 인스턴스에 등록
.client(client)
.build();
상태 확인 - Network
- 크롬(Chrome) 검색창 입력 " Chrome://inspect "
- 연결된 디바이스 프로젝트 연동 ( 확인할 프로젝트의 Inspect 클릭 )
- Network (네트워크) 정보 확인 - URL / Request Method / Response Code / Header / Body
: 네트워크 요청 건마다 개별적으로 확인이 가능
- Response Body 요청 값(페이로드) 확인
값 확인 - DB 'SQLite / SharedPreference'
- DB (SQLite) 실제 값 확인 - 에뮬레이터 뿐만 아니라 실제기기의 SQLite 값을 실시간 확인이 가능
- SQLite 값 설정 - 쿼리(Query)문을 이용해 값 조회, 추가, 삭제 기능이 가능
- SQLite 쿼리 사용 GIF - 클릭해서 보시면 제대로 진행됩니다.
- SharedPreference 실제 값 확인 및 변경 - 값을 직접 브라우저(Chrome)에서 변경이 가능
참고
Stetho - Network / DB 확인하기 위해 로그(Log)를 이용한 복잡한 디버깅보다 직관적인 디버깅 방법