Stetho에서 Android의 Network Performance 보기
자기소개
안녕하세요 @wasabeef_kr 입니다.
아, 그러고 보니 2015/4/25(토)에 DroidKaigi이 있네요.
나도 참가하기 때문에, 이런 장소에서 정보 교환 할 수 있으면 좋네요.
이번은 요 전날 Facebook이 공개한 Stetho에 대해 소개하고 싶습니다.
Stetho
Stetho는 Android 용 Debug Bridge이며 이것을 사용하면
Chrome Developer Tools의 일부를 활용하여 Javascript와 마찬가지로 Network 상태를 확인할 수 있는 도구입니다.
Usage
Download
우선은 Stetho 본체를 지정합니다.
// Gradle dependency on Stetho
dependencies {
compile 'com.facebook.stetho:stetho:1.0.0'
}
네트워크 검사를 사용하려면
OkHttpClient 또는 UrlConnection용 후크 라이브러리도 지정합니다.
dependencies {
compile 'com.facebook.stetho:stetho-okhttp:1.0.0'
}
or
dependencies {
compile 'com.facebook.stetho:stetho-urlconnection:1.0.0'
}
Setup
Proguard의 Shrink 대상에서 stetho 패키지를 제거합니다.
-keep class com.facebook.stetho.** {*;}
Application 클래스 등으로, Stetho의 초기화를 실시합니다.
Default의 Provider를 사용하는 경우대로 다음과 같이 합니다.
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
}
OkHttpClient
networkInterceptors
에 추가합니다.예를 들어, Retrofit + Glide or Picasso 등 여러 개로 OkHttpClient를 사용하는 경우
각 OkHttpClient 인스턴스에 지정하지 않으면 성공적으로 검색할 수 없습니다.
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
return new RestAdapter.Builder()
.setEndpoint("http://wasabeef.jp")
.setClient(new OkClient(client))
.build();
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
// 3.4以下
Glide.get(this).register(GlideUrl.class, InputStream.class, factory);
// 3.5以上
public class MyGlideModule extends OkHttpGlideModule {
@Override
public void registerComponents(Context context, Glide glide) {
glide.register(GlideUrl.class, InputStream.class, factory);
}
}
Picasso picasso = new Picasso.Builder(this).downloader(new OkHttpDownloader(client)).build();
Picasso.setSingletonInstance(picasso);
커스텀 덤프를 이용하는 경우는, 이와 같이 지정합니다.
표준 Stetho가 출력하는 데이터에서 부족한 경우 사용자 지정 Provider를 만듭니다.
설명 할 수 없으므로 샘플을 확인하십시오.
Stetho.initialize(Stetho.newInitializerBuilder(context)
.enableDumpapp(new MyDumperPluginsProvider(context))
.build())
private static class MyDumperPluginsProvider implements DumperPluginsProvider {
public Iterable<DumperPlugin> get() {
ArrayList<DumperPlugin> plugins = new ArrayList<DumperPlugin>();
for (DumperPlugin defaultPlugin : Stetho.defaultDumperPluginsProvider(mContext).get()) {
plugins.add(defaultPlugin);
}
plugins.add(new MyDumperPlugin());
return plugins;
}
}
Features
자바 스크립트를 개발하는 사람은 익숙한 것이라고 생각합니다.
Chrome DevTools에서 확인합니다.
기기를 PC에 연결하고 Chrome DevTools > inspect를 시작합니다.
Network를 확인하면 Image, Json 데이터는 물론이고, 데이터 사이즈, 응답 시간도 확인할 수 있습니다.
Resource를 확인하면, 예를 들면 ActiveAndroid의 ORM등에서 SQLite를 이용하고 있는 경우는
DB의 데이터 상태를 빠르고 쉽게 확인할 수 있습니다.
잡감
너무 편리했기 때문에 여러분과 나누면 좋겠습니다.
뭔가 있으면 @wasabeef_kr 까지
Reference
이 문제에 관하여(Stetho에서 Android의 Network Performance 보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wasabeef_jp/items/1e7bdb78766708206d3d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Stetho에서 Android의 Network Performance 보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wasabeef_jp/items/1e7bdb78766708206d3d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)