BugSense 클라이언트 분석
    Swmaestro 3기 1-2차 logdog팀
                   멘토 : 손영수
             멘티 : 정승수,오혜성
                 작성자 : 정승수
STAN 분석
STAN 분석
STAN 분석
STAN 분석
STAN 분석
버그센스의 개발자들이 사용하는 기능들에
대하여 분석해 보았다.
사용법
• <uses-permission
  android:name="android.permission.INTER
  NET" />
• 위와같이 xml파일에 인터넷이 가능하도록
  일단 설정 해야 한다.
사용법
• BugSenseHandler.initAndStartSession(Co
  ntext, APIKEY);

• 위와 같은 코드를 맨처음 Activity시작할때
  SetContentView코드를 실행하기 전에 넣
  어 준다.

• 단지 코드 한줄로 개발자가 매우 간단하게
  사용 할 수 있다.
사용법
• APIKEY란?
 – 버그센스는 서버를 제공하는 것이라 단지 key
   값만 가지고도 자신이 만든 계정으로 연결 될
   수 있다.



• 위와같이 계정을 만들고 프로젝트를 생성
  하면 오른쪽 상단위에 APIKEY가 나온다.
사용법
• 세션을 종료하기 위해 앱 종료 부분에 다음
  과 같은 코드를 넣어 준다.
 – BugsenseHandler.closeSession(Context);


• Savedata나 기타 것들을 초기화 시키기 위
  해서는 다음과 같은 코드를 넣어 준다.
 – BugSenseHandler.flush(Contexs);
기능1 사용자 정보 추가


이 같은 코드를 넣게 되면 버그리포트시 위와
같은 정보가 추가되어서 오게 된다.



위처럼 해쉬 맵을 사용하여 추가정보를 넣을
수 있다.
기능1 사용자 정보 추가
• 서버에서 온 에러리포트에 추가 된 모습
기능2. Exception 핸들링시 에러 전송




다음과 같은 코드를 제작하면 divide by zero 라
는 예외가 나오게 된다.

여기서 위와 같은 코드를 추가하게 되면 에러
리포트가 서버쪽으로 전송 되게 된다.
기능2. Exception 핸들링시 에러 전송

예외가 서버에 전송된 모습
기능2. Exception 핸들링시 에러 전송

예외가 서버에 전송된 모습
기능3. Proguard 사용시(유료,Plus)
• 프로가드에서 다음과 같은 라인을 추가하
  면 된다.

• -keep public class com.bugsense.*
기능3. Proguard 사용시(유료,Plus)
• 서버쪽 셋팅부문에 파일(Mapping)을 업로
  드해야한다.
여기서 Proguard란?
• 코드 난독화 오프소스 툴

• GPL 라이선스

• 프로젝트 루트 폴더의 default.properties에
  proguard.config=proguard.cfg 이것만 추가
  하면 됨
여기서 Proguard란?
• 프로가드 사용시 4가지 파일이 나온다.
 – dump.txt : 내부구조에 대한 대략적인 구조 난독화
   과정에서 나오는 덤프들

 – mapping.txt : 어떤 클래스와 멤버들이 어떻게 난
   독화 되어 맵핑 되어 있는지 보여주는 중요한 파일

 – seeds.txt :난독화 되지 않은 것들

 – usage.txt :사용되지 않아 제거된 것들
Proguard 콜스택 디버깅
• Windows에서는 retrace.bat
• Linux나 MacOS X에서는 retrace.sh

• <sdk_root>/tools/proguard/ directory에 이러한 파
  일이 존재

• retrace.bat|retrace.sh [-verbose] mapping.txt
  [<stacktrace_file>]

• 예를 들어
   – retrace.bat -verbose mapping.txt bfuscated_trace.txt
기능4. Logcat읽기(유료,Enterprise)
• <uses-permission
  android:name="android.permission.READ
  _LOGS" />
• 유져퍼미션을 설정

• setLogging(int lines)
  setLogging(String filter)
  setLogging(int lines, String filter)
• 다음과 같은 필터를 설정
기능4. Logcat읽기(유료, Enterprise)




 이런 방식으로 로그를 읽어 들인다.
기능5. 사용자 정의 이벤트 기록
• BugSenseHandler.sendEvent(MyActivity.th
  is, "button1 pressed");

• 다음과 같은 코드를 써 넣음으로 사용자 정
  의 이벤트를 기록 할 수 있다.

• (테스트 해 보았으나 잘 되지 않았다.)
기능6. Fix Notification(유료,Indie)
• BugSenseHandler.setLocalizedNotification
  ("Mi app", "Lo hemos corregido", "Por
  favor, actualice su aplicacion, este error ha
  sido corregido!");
• 버그 픽스에 대한 메시지를 사용자에게 보
  낼 수 있다.
기능6. Fix Notification(유료,Indie)
기능7. Application Crash Report for
  Android(ACRA)와의 연동
• @ReportsCrashes(formUri=
  "http://www.bugsense.com/api/acra?api_k
  ey=YOUR_API_KEY", formKey="")

• 단지 formUri만 위와같이 변경해주고
  APIKEY만 자신의 것으로 바꿔주면 바로
  연동이 된다.
Acra?


ACRA는 여러 목적지에 충돌 보고서를 보낼 수 있
다.
• Google 문서 도구 스프레드 시트 (기본)
• 이메일
• 자신 서버 측 HTTP POST의 스크립트
• 나만의 보고서를 보낸 사람을 구현하여 다른
가능한 대상
유료정책

Bug sense 분석

  • 1.
    BugSense 클라이언트 분석 Swmaestro 3기 1-2차 logdog팀 멘토 : 손영수 멘티 : 정승수,오혜성 작성자 : 정승수
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    버그센스의 개발자들이 사용하는기능들에 대하여 분석해 보았다.
  • 8.
    사용법 • <uses-permission android:name="android.permission.INTER NET" /> • 위와같이 xml파일에 인터넷이 가능하도록 일단 설정 해야 한다.
  • 9.
    사용법 • BugSenseHandler.initAndStartSession(Co ntext, APIKEY); • 위와 같은 코드를 맨처음 Activity시작할때 SetContentView코드를 실행하기 전에 넣 어 준다. • 단지 코드 한줄로 개발자가 매우 간단하게 사용 할 수 있다.
  • 10.
    사용법 • APIKEY란? –버그센스는 서버를 제공하는 것이라 단지 key 값만 가지고도 자신이 만든 계정으로 연결 될 수 있다. • 위와같이 계정을 만들고 프로젝트를 생성 하면 오른쪽 상단위에 APIKEY가 나온다.
  • 11.
    사용법 • 세션을 종료하기위해 앱 종료 부분에 다음 과 같은 코드를 넣어 준다. – BugsenseHandler.closeSession(Context); • Savedata나 기타 것들을 초기화 시키기 위 해서는 다음과 같은 코드를 넣어 준다. – BugSenseHandler.flush(Contexs);
  • 12.
    기능1 사용자 정보추가 이 같은 코드를 넣게 되면 버그리포트시 위와 같은 정보가 추가되어서 오게 된다. 위처럼 해쉬 맵을 사용하여 추가정보를 넣을 수 있다.
  • 13.
    기능1 사용자 정보추가 • 서버에서 온 에러리포트에 추가 된 모습
  • 14.
    기능2. Exception 핸들링시에러 전송 다음과 같은 코드를 제작하면 divide by zero 라 는 예외가 나오게 된다. 여기서 위와 같은 코드를 추가하게 되면 에러 리포트가 서버쪽으로 전송 되게 된다.
  • 15.
    기능2. Exception 핸들링시에러 전송 예외가 서버에 전송된 모습
  • 16.
    기능2. Exception 핸들링시에러 전송 예외가 서버에 전송된 모습
  • 17.
    기능3. Proguard 사용시(유료,Plus) •프로가드에서 다음과 같은 라인을 추가하 면 된다. • -keep public class com.bugsense.*
  • 18.
    기능3. Proguard 사용시(유료,Plus) •서버쪽 셋팅부문에 파일(Mapping)을 업로 드해야한다.
  • 19.
    여기서 Proguard란? • 코드난독화 오프소스 툴 • GPL 라이선스 • 프로젝트 루트 폴더의 default.properties에 proguard.config=proguard.cfg 이것만 추가 하면 됨
  • 20.
    여기서 Proguard란? • 프로가드사용시 4가지 파일이 나온다. – dump.txt : 내부구조에 대한 대략적인 구조 난독화 과정에서 나오는 덤프들 – mapping.txt : 어떤 클래스와 멤버들이 어떻게 난 독화 되어 맵핑 되어 있는지 보여주는 중요한 파일 – seeds.txt :난독화 되지 않은 것들 – usage.txt :사용되지 않아 제거된 것들
  • 21.
    Proguard 콜스택 디버깅 •Windows에서는 retrace.bat • Linux나 MacOS X에서는 retrace.sh • <sdk_root>/tools/proguard/ directory에 이러한 파 일이 존재 • retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] • 예를 들어 – retrace.bat -verbose mapping.txt bfuscated_trace.txt
  • 22.
    기능4. Logcat읽기(유료,Enterprise) • <uses-permission android:name="android.permission.READ _LOGS" /> • 유져퍼미션을 설정 • setLogging(int lines) setLogging(String filter) setLogging(int lines, String filter) • 다음과 같은 필터를 설정
  • 23.
    기능4. Logcat읽기(유료, Enterprise) 이런 방식으로 로그를 읽어 들인다.
  • 24.
    기능5. 사용자 정의이벤트 기록 • BugSenseHandler.sendEvent(MyActivity.th is, "button1 pressed"); • 다음과 같은 코드를 써 넣음으로 사용자 정 의 이벤트를 기록 할 수 있다. • (테스트 해 보았으나 잘 되지 않았다.)
  • 25.
    기능6. Fix Notification(유료,Indie) •BugSenseHandler.setLocalizedNotification ("Mi app", "Lo hemos corregido", "Por favor, actualice su aplicacion, este error ha sido corregido!"); • 버그 픽스에 대한 메시지를 사용자에게 보 낼 수 있다.
  • 26.
  • 27.
    기능7. Application CrashReport for Android(ACRA)와의 연동 • @ReportsCrashes(formUri= "http://www.bugsense.com/api/acra?api_k ey=YOUR_API_KEY", formKey="") • 단지 formUri만 위와같이 변경해주고 APIKEY만 자신의 것으로 바꿔주면 바로 연동이 된다.
  • 28.
    Acra? ACRA는 여러 목적지에충돌 보고서를 보낼 수 있 다. • Google 문서 도구 스프레드 시트 (기본) • 이메일 • 자신 서버 측 HTTP POST의 스크립트 • 나만의 보고서를 보낸 사람을 구현하여 다른 가능한 대상
  • 29.