Links

[Crash] SDK 설정

IMQA Crash는 다양한 옵션이 존재하며, 사용자가 원하는 설정을 추가하여 더욱 자세한 크래시 리포트를 받아 보실 수 있습니다.

1. Custom Crash 발생

IMQA Crash Agent 에서는 다음과 같은 사용자 정의 에러를 수집할 수 있습니다. Exception 객체와 함께 특정 태그, 에러의 등급을 지정할 수 있습니다.
try {
...
} catch (SomeException e) {
IMQACrashAgent.SendException(e, "ERROR TAG", ErrorRank.Major);
}
에러 랭크의 경우 별도로 정해져있지는 않으며 앱의 구성에 따라 변경하여 사용가능합니다.
Rank
Description
ErrorRank.Unhandle
기본이 되는 에러 등급으로 처리하지 못한 크래시에 사용
ErrorRank.Critical
앱에 상당한 영향을 주는 크래시 일 경우
ErrorRank.Major
앱에 영향이 있는 크래시 일 경우
ErrorRank.Minor
앱에 큰 영향이 없는 크래시 일 경우

2. EventPath 등

EventPath는 사용자의 기기에서 앱이 어떤 경로로 동작하는지 파악하는 기능입니다. 이를 사용하기 위해서는 클래스에 EventPath 추적 코드를 넣어주어야 합니다. 추적코드에 ‘STEP’ 과 ‘LABEL’에 해당되는 내용을 넣어줍니다.
STEP
LABEL
수집할 콜스택의 단계, 해당 스텝의 클래스명, 함수이름, 호출 위치를 가지고 옵니다.
수집된 EventPath 의 별칭, 크래시 정보 창에서 EventPath의 각 발생 위치를 별칭으로 보여줍니다.
public void onClickSomething() {
EventPathManager.CreateEventPath(STEP, LABEL);
}

3. Custom User ID 등록

크래시 발생시 사용자를 구분하기 위한 커스텀한 ID를 부여할 수 있습니다. 유저 정보를 등록한 후에는 발생하는 크래시에서 사용자 정보가 포함되어 보여집니다.
Class Name
Method Name
Description
IdentifierCollector
setUserId(STRING)
사용자 ID를 등록합니다.
IdentifierCollector
setUserName(STRING)
사용자 이름을 등록합니다.
IdentifierCollector
setUserMail(STRING)
사용자 이메일을 등록합니다.
IdentifierCollector.setUserId("10"); // 사용자 ID를 등록합니다.
IdentifierCollector.setUserName("My User Name"); // 사용자 이름을 등록합니다.
IdentifierCollector.setUserMail("My User Email"); // 사용자 이메일을 등록합니다.

4. Custom User Log/Key 등록

크래시가 발생하기 전에 원하는 로그를 개발자가 직접 추가로 남길 수 있습니다. (최대 100개)
Class Name
Method Name
Description
CustomLogCollector
log(STRING)
로그를 일반 문자열로 남깁니다.
CustomLogCollector
log(KEY, VALUE)
로그를 키:값 형태로 남깁니다.
CustomLogCollector.log("test log"); // 로그를 일반 문자열로 남깁니다.
CustomKeyCollector.log("My Key", "My Log"); // 로그를 키:값 형태로 남깁니다.

5. 초기화 Option 추가

IMQAController 초기화 시 옵션을 지정할 수 있습니다. IMQA Crash 모드를 파라미터나 Option을 이용해 변경할 수 있습니다.
Class Name
Method Name
Text
IMQAOption
setDirectUploadFlag(BOOL)
업로드 모드를 설정합니다. false 로 설정할 경우 debug mode 에서도 동작합니다.
IMQAOption
setPrintLog(BOOL)
Log 출력 여부를 설정합니다. true 로 설정할 경우 IMQA 의 Log가 출력됩니다.
IMQAOption
setAnrOn(BOOL)
ANR 을 모니터링 여부를 설정합니다. false 로 설정할 경우 ANR은 크래시 수집에서 제외됩니다.
IMQAOption
setAnrTimeoutIntercal(int)
ANR 타임아웃이 발생하는 시간을 설정합니다. (milliseconds 단위)
MyApplication.java
@Override
public void onCreate() {
super.onCreate();
io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();
/*
* 기본값 : true
* ANR 정보 수집 여부를 설정합니다.
* true : ANR 발생 여부를 모니터링 합니다.