32
안드로이드 개발에 유용한 도구들 안세원 GDG Korea Android kingori @ gmail.com

안드로이드 개발에 유용한 도구들

Embed Size (px)

Citation preview

Page 1: 안드로이드 개발에 유용한 도구들

안드로이드����������� ������������������  개발에����������� ������������������  유용한����������� ������������������  도구들

안세원����������� ������������������  GDG����������� ������������������  Korea����������� ������������������  Android����������� ������������������  kingori����������� ������������������  @����������� ������������������  gmail.com

Page 2: 안드로이드 개발에 유용한 도구들

안드로이드����������� ������������������  개발에����������� ������������������  유용한����������� ������������������  도구들

안세원����������� ������������������  GDG����������� ������������������  Korea����������� ������������������  Android����������� ������������������  kingori����������� ������������������  @����������� ������������������  gmail.com

앱의����������� ������������������  동작과����������� ������������������  내부에����������� ������������������  저장된����������� ������������������  데이터를����������� ������������������  파악하는데����������� ������������������  도움이����������� ������������������  되는

Page 3: 안드로이드 개발에 유용한 도구들

• Stetho����������� ������������������  

• LeakCanary����������� ������������������  

• HierarchyViewer����������� ������������������  

• Debugger����������� ������������������  팁

3

다룰����������� ������������������  내용

Page 4: 안드로이드 개발에 유용한 도구들

• Stetho����������� ������������������  

• LeakCanary����������� ������������������  

• HierarchyViewer����������� ������������������  

• Debugger����������� ������������������  팁

4

다룰����������� ������������������  내용

Page 5: 안드로이드 개발에 유용한 도구들

Stetho•페이스북이����������� ������������������  만든����������� ������������������  킹왕짱����������� ������������������  종합����������� ������������������  선물세트����������� ������������������  

• http://facebook.github.io/stetho/����������� ������������������  

•크롬����������� ������������������  브라우저의����������� ������������������  inspect����������� ������������������  UI를����������� ������������������  이용해����������� ������������������  각종����������� ������������������  정보����������� ������������������  조회����������� ������������������  

•네트워크,����������� ������������������  Sqlite����������� ������������������  DB,����������� ������������������  SharedPreference,����������� ������������������  UI

5

Page 6: 안드로이드 개발에 유용한 도구들

주요����������� ������������������  기능

•네트워크����������� ������������������  로깅����������� ������������������  

•앱����������� ������������������  내부����������� ������������������  Sqlite����������� ������������������  DB����������� ������������������  SQL����������� ������������������  ����������� ������������������  실행:����������� ������������������  조회����������� ������������������  뿐����������� ������������������  아니라����������� ������������������  수정도����������� ������������������  가능����������� ������������������  

• SharedPreference����������� ������������������  조회/수정����������� ������������������  

•커스텀����������� ������������������  동작����������� ������������������  수행할����������� ������������������  수����������� ������������������  있는����������� ������������������  dump����������� ������������������  plugin����������� ������������������  

• Javascript����������� ������������������  Console

6

Page 7: 안드로이드 개발에 유용한 도구들

뭐가����������� ������������������  좋다는����������� ������������������  거지?•네트워크����������� ������������������  

•헤더값����������� ������������������  까보려고����������� ������������������  proxy����������� ������������������  깔고����������� ������������������  설정하지����������� ������������������  말자!����������� ������������������  

• logcat����������� ������������������  째려보면서����������� ������������������  json����������� ������������������  눈으로����������� ������������������  파싱하지����������� ������������������  말자!����������� ������������������  

• Sqlite����������� ������������������  DB����������� ������������������  

•쿼리����������� ������������������  날리려고����������� ������������������  db����������� ������������������  파일����������� ������������������  export����������� ������������������  해서����������� ������������������  다른����������� ������������������  도구에서����������� ������������������  열어보지����������� ������������������  말자!����������� ������������������  

•데이터����������� ������������������  조작하려고����������� ������������������  디버거����������� ������������������  걸어두고����������� ������������������  sql����������� ������������������  불편하게����������� ������������������  날리지����������� ������������������  말자!

7

Page 8: 안드로이드 개발에 유용한 도구들

뭐가����������� ������������������  좋다는����������� ������������������  거지?����������� ������������������  (2)• SharedPreference����������� ������������������  

• 값����������� ������������������  조회����������� ������������������  /����������� ������������������  조작하려고����������� ������������������  일일이����������� ������������������  api����������� ������������������  날리지����������� ������������������  말자!����������� ������������������  

• UI����������� ������������������  

• 왜����������� ������������������  여기서����������� ������������������  3px����������� ������������������  더����������� ������������������  벌어지는건지,����������� ������������������  이게����������� ������������������  마진����������� ������������������  문젠지����������� ������������������  패딩����������� ������������������  문젠지����������� ������������������  파악하고����������� ������������������  싶을����������� ������������������  때����������� ������������������   (그나마)����������� ������������������  편하게����������� ������������������  확인하자!����������� ������������������  

• Dumper����������� ������������������  Plugin����������� ������������������  

• 커스텀����������� ������������������  정보����������� ������������������  조회����������� ������������������  /����������� ������������������  수정작업을����������� ������������������  콘솔창에서����������� ������������������  수행하자!

8

Page 9: 안드로이드 개발에 유용한 도구들

설정•Gradle����������� ������������������  

dependencies����������� ������������������  {����������� ������������������  ����������� ������������������  ����������� ������������������  debugCompile����������� ������������������  ‘com.facebook.stetho:stetho:1.4.1'����������� ������������������  }����������� ������������������  

• Application에서����������� ������������������  초기화����������� ������������������  :����������� ������������������  다양한����������� ������������������  옵션이����������� ������������������  있으니����������� ������������������  더����������� ������������������  공부해보세요!����������� ������������������  

• adb����������� ������������������  연결����������� ������������������  후����������� ������������������  크롬����������� ������������������  브라우저에서����������� ������������������  chrome://inspect����������� ������������������  로����������� ������������������  이동!

9

Page 10: 안드로이드 개발에 유용한 도구들

네트워크����������� ������������������  로깅•네트워크����������� ������������������  호출����������� ������������������  API와����������� ������������������  연결����������� ������������������  필요����������� ������������������  

• okhttp,����������� ������������������  url����������� ������������������  connection����������� ������������������  모듈은����������� ������������������  별도����������� ������������������  library로����������� ������������������  제공����������� ������������������  ����������� ������������������  ����������� ������������������  dependencies����������� ������������������  {����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  compile����������� ������������������  'com.facebook.stetho:stetho-okhttp3:1.4.1'����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  }����������� ������������������  

10

Page 11: 안드로이드 개발에 유용한 도구들

우리����������� ������������������  프로젝트에선����������� ������������������  못쓸것����������� ������������������  같은데?•우린����������� ������������������  특별한����������� ������������������  네트워크����������� ������������������  암호화를����������� ������������������  적용하는데요?����������� ������������������  

•우린����������� ������������������  소켓����������� ������������������  통신을����������� ������������������  많이����������� ������������������  하는데����������� ������������������  소켓은����������� ������������������  못쓰죠?����������� ������������������  

→����������� ������������������  NetworkEventReportImpl에����������� ������������������  직접����������� ������������������  로그를����������� ������������������  넣으세요!����������� ������������������  

•생각한대로����������� ������������������  동작하지����������� ������������������  않을����������� ������������������  수도����������� ������������������  있어요!����������� ������������������  

• NetworkEventReporter����������� ������������������  javadoc����������� ������������������  주의깊게����������� ������������������  읽어야����������� ������������������  함����������� ������������������  https://goo.gl/gJFYHh����������� ������������������  

•잘����������� ������������������  만들어진����������� ������������������  okhttp����������� ������������������  StehoInterceptor����������� ������������������  등의����������� ������������������  소스를����������� ������������������  참고하자

11

Page 12: 안드로이드 개발에 유용한 도구들

커스텀����������� ������������������  로깅����������� ������������������  예제•Stetho로����������� ������������������  Socket.IO����������� ������������������  채팅����������� ������������������  통신����������� ������������������  로그를����������� ������������������  남겨보자!����������� ������������������  

• Socket.IO����������� ������������������  안드로이드����������� ������������������  라이브러리의����������� ������������������  로그를����������� ������������������  Stetho로����������� ������������������  남기기����������� ������������������  http://socket.io/blog/native-socket-io-and-android/����������� ������������������  

• 데모프로젝트의����������� ������������������  StethoSocketIOLogger����������� ������������������  참고

12

Page 13: 안드로이드 개발에 유용한 도구들

dumpapp•커맨드라인에서����������� ������������������  stetho를����������� ������������������  이용,����������� ������������������  미리����������� ������������������  구현한����������� ������������������  로직을����������� ������������������  호출함����������� ������������������  • python����������� ������������������  script����������� ������������������  가����������� ������������������  stetho����������� ������������������  설정할����������� ������������������  때����������� ������������������  등록한����������� ������������������  플러그인을����������� ������������������  호출����������� ������������������  •실행하려면����������� ������������������  python����������� ������������������  script����������� ������������������  다운로드����������� ������������������  필요

13

curl����������� ������������������  -o����������� ������������������  dumpapp����������� ������������������  https://raw.githubusercontent.com/facebook/stetho/master/scripts/dumpapp

curl����������� ������������������  -o����������� ������������������  stetho_open.py����������� ������������������  https://raw.githubusercontent.com/facebook/stetho/master/scripts/stetho_open.py

./dumpapp

Page 14: 안드로이드 개발에 유용한 도구들

커스텀����������� ������������������  dumpapp����������� ������������������  플러그인����������� ������������������  예제•커맨드라인에서����������� ������������������  넘긴����������� ������������������  메시지를����������� ������������������  토스트로����������� ������������������  띄워보자!����������� ������������������  • DumperPlugin����������� ������������������  인터페이스를����������� ������������������  구현해서����������� ������������������  플러그인����������� ������������������  작성����������� ������������������  • Stetho����������� ������������������  초기화����������� ������������������  시����������� ������������������  구현한����������� ������������������  플러그인을����������� ������������������  등록

14

Page 15: 안드로이드 개발에 유용한 도구들

더����������� ������������������  알아봅시다•커스텀����������� ������������������  DatabaseDriver를����������� ������������������  활용하기����������� ������������������  

• Javascript����������� ������������������  Console����������� ������������������  활용하기����������� ������������������  

•샘플:����������� ������������������  https://github.com/kingori/devfest2016_sample

15

Page 16: 안드로이드 개발에 유용한 도구들

• Stetho����������� ������������������  

• LeakCanary����������� ������������������  

• HierarchyViewer����������� ������������������  

• Debugger����������� ������������������  팁

16

다룰����������� ������������������  내용

Page 17: 안드로이드 개발에 유용한 도구들

LeakCanary

17

• Sqaure에서����������� ������������������  만든����������� ������������������  액티비티����������� ������������������  메모리����������� ������������������  릭����������� ������������������  탐지����������� ������������������  도구����������� ������������������  

• https://github.com/square/leakcanary����������� ������������������  

•액티비티����������� ������������������  destroy����������� ������������������  시점에����������� ������������������  GC을����������� ������������������  수행하고,����������� ������������������  참조가����������� ������������������  사라지지����������� ������������������  않을����������� ������������������  경우����������� ������������������  메모리����������� ������������������  릭으로����������� ������������������  판단함����������� ������������������  

•내부구현����������� ������������������  분석:����������� ������������������  https://goo.gl/C7u3Go����������� ������������������  

•메모리����������� ������������������  릭����������� ������������������  탐지����������� ������������������  결과는����������� ������������������  notification으로����������� ������������������  알려줌

Page 18: 안드로이드 개발에 유용한 도구들

설정•Gradle����������� ������������������  

• Application

18

����������� ������������������  dependencies����������� ������������������  {����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  debugCompile����������� ������������������  'com.squareup.leakcanary:leakcanary-android:1.5'����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  releaseCompile����������� ������������������  'com.squareup.leakcanary:leakcanary-android-no-op:1.5'����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  testCompile����������� ������������������  'com.squareup.leakcanary:leakcanary-android-no-op:1.5'����������� ������������������  ����������� ������������������  }

Page 19: 안드로이드 개발에 유용한 도구들

메모리����������� ������������������  릭����������� ������������������  탐지����������� ������������������  예제•Activity����������� ������������������  instance를����������� ������������������  static����������� ������������������  으로����������� ������������������  담아두는����������� ������������������  흉악한����������� ������������������  짓을����������� ������������������  해����������� ������������������  보자!

19

Page 20: 안드로이드 개발에 유용한 도구들

• Stetho����������� ������������������  

• LeakCanary����������� ������������������  

• HierarchyViewer����������� ������������������  

• Debugger����������� ������������������  팁

20

다룰����������� ������������������  내용

Page 21: 안드로이드 개발에 유용한 도구들

HierarchyViewer•옛~날부터����������� ������������������  SDK가����������� ������������������  제공하는����������� ������������������  뷰����������� ������������������  성능����������� ������������������  /����������� ������������������  속성����������� ������������������  조회����������� ������������������  도구����������� ������������������  

• https://developer.android.com/studio/profile/optimize-ui.html#HierarchyViewer����������� ������������������  

•렌더링����������� ������������������  성능에����������� ������������������  영향을����������� ������������������  미치는����������� ������������������  노드����������� ������������������  정보����������� ������������������  제공,����������� ������������������  각����������� ������������������  노드의����������� ������������������  렌더링����������� ������������������  결과물����������� ������������������  조회����������� ������������������  

•구닥다리����������� ������������������  도구����������� ������������������  아닌가요?����������� ������������������  구관이����������� ������������������  명관입니다요!

21

Page 22: 안드로이드 개발에 유용한 도구들

실행•Device����������� ������������������  monitor에����������� ������������������  통합되어����������� ������������������  있음.����������� ������������������  찾기����������� ������������������  어려워서����������� ������������������  문제지..

22

Page 23: 안드로이드 개발에 유용한 도구들

실����������� ������������������  기기에서����������� ������������������  실행하려면?•에뮬레이터나����������� ������������������  루팅된����������� ������������������  기기가����������� ������������������  아니라면����������� ������������������  hierarchy����������� ������������������  viewer����������� ������������������  내용이����������� ������������������  안보인다?����������� ������������������  

• 4.0����������� ������������������  이하:����������� ������������������  ViewServer����������� ������������������  클래스를����������� ������������������  실행����������� ������������������  ����������� ������������������  

• 4.0����������� ������������������  초과����������� ������������������  :����������� ������������������  환경변수����������� ������������������  설정����������� ������������������  export����������� ������������������  ANDROID_HVPROTO=ddm����������� ������������������  

• https://developer.android.com/studio/profile/hierarchy-viewer-setup.html

23

Page 24: 안드로이드 개발에 유용한 도구들

24

Page 25: 안드로이드 개발에 유용한 도구들

25

Page 26: 안드로이드 개발에 유용한 도구들

Layout����������� ������������������  Inspector•안드로이드����������� ������������������  스튜디오����������� ������������������  2.2����������� ������������������  에����������� ������������������  추가된,����������� ������������������  Hierarchy����������� ������������������  Viewer의����������� ������������������  계승자����������� ������������������  

• http://tools.android.com/tech-docs/layout-inspector����������� ������������������  

•아직은����������� ������������������  레이아웃����������� ������������������  스냅샷����������� ������������������  기능밖에����������� ������������������  없음

26

Page 27: 안드로이드 개발에 유용한 도구들

• Stetho����������� ������������������  

• LeakCanary����������� ������������������  

• HierarchyViewer����������� ������������������  

• Debugger����������� ������������������  팁

27

다룰����������� ������������������  내용

Page 28: 안드로이드 개발에 유용한 도구들

• 실행����������� ������������������  중단����������� ������������������  지점에서����������� ������������������  다양한����������� ������������������  조작����������� ������������������  실행

28

Evaluate����������� ������������������  expression����������� ������������������  (Alt+F8)

Page 29: 안드로이드 개발에 유용한 도구들

• 특정����������� ������������������  조건을����������� ������������������  만족할����������� ������������������  경우에만����������� ������������������  실행을����������� ������������������  중단

29

Conditional����������� ������������������  Breakpoint

Page 30: 안드로이드 개발에 유용한 도구들

• 한두번����������� ������������������  확인하고����������� ������������������  말����������� ������������������  용도의 로그메시지����������� ������������������  

• Suspend����������� ������������������  옵션은����������� ������������������  꺼두자

30

Breakpoint����������� ������������������  >����������� ������������������  Log����������� ������������������  message

Page 31: 안드로이드 개발에 유용한 도구들

질문?

Page 32: 안드로이드 개발에 유용한 도구들

고맙습니다!

샘플:����������� ������������������  https://github.com/kingori/devfest2016_sample