Crash 설치

안드로이드 Crash SDK 설치 방법을 한 눈에 확인하실 수 있습니다.

안드로이드는 MPM SDK를 설치하시면 Crash SDK를 별도로 설치하실 필요가 없습니다. MPM과 Crash 모두 설치하실 경우 정상적으로 설치가 되지 않을 수 있으니 MPM SDK만 설치해 주세요.

MPM SDK를 설치하지 않으신 경우, MPM SDK 설치 후 Crash 기본 설정을 진행해 주세요. MPM SDK 설치 방법은 'Android > MPM 설치'에서 확인하실 수 있습니다.

1. SDK 설치

일반적으로 ‘<project_dir>/app/build.gradle’ 에 있습니다.

• Android Studio 에서 ‘app.gradle’ 파일을 열어줍니다. • repositories에 ‘mavenCentral()’ 를 추가해주세요. • dependencies에 ‘imqa-crash-client’ 를 추가해주세요.

파일을 업데이트 한 후 Gradle 파일을 동기화 해야 합니다.

app.gradle
// jcenter 저장소 추가
repositories {
    mavenCentral()
}

// compile 또는 implementation 의존성 추가
dependencies {
    compile 'io.imqa:imqa-core:2.27.4'
    compile 'io.imqa:imqa-crash-client:2.27.4'

    // zstd 사용할 경우 추가
    implementation 'com.github.luben:zstd-jni:1.5.2-3@aar'
}

2. 기본 설정

인터넷 설정

프로젝트의 ‘AndroidManifest.xml’ 에 발생한 충돌 정보를 업로드하기 위해 인터넷 권한을 추가합니다.

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<!-- LogCat 내용을 보고 싶을 경우 -->
<uses-permission android:name="android.permission.READ_LOGS"/> 

IMQAController 초기화하기

프로젝트의 ‘Application’ 클래스에 IMQAController를 초기화하는 코드를 넣어줍니다. ‘PROJECT_KEY’ 는 IMQA 사이트에서 프로젝트를 생성한 후 발급 받으실 수 있습니다.

MyApplication.java
...
  @Override
  public void onCreate() {
      super.onCreate();
      io.imqa.crash.IMQACrashAgent.InitializeAndStartSession(
          this,
          BuildConfig.FLAVOR,
          "PROJECT_KEY");
  }
...
MyApplication.kt
...
  override fun onCreate() {
      super.onCreate()
      io.imqa.crash.IMQACrashAgent.InitializeAndStartSession(
          this,
          BuildConfig.FLAVOR,
          "PROJECT_KEY")
  }
...

⚠️ HTTPS (API level > 27)

Android API 28 부터 강화된 네트워크 보안 정책에 의해 HTTPS 요청이 필요해졌습니다. 이를 해결하기위해 다음 조치가 필요합니다.

• 인증된 HTTPS 요청 IMQA 서버로 인증된 HTTPS 를 요청하여 정상적으로 수집을 합니다.

MyApplication.java or MyApplication.kt
...
imqaOption.setCrashServerUrl('https://collector.imqa.io');
...

• 강제 HTTP 요청 이 flag를 설정하여 모든 cleartext 트래픽에 대해 허용처리를 할 수 있습니다.

AndroidManifest.xml
...
<application
    ...
    android:usesCleartextTraffic="true"
    />
...

Zstandard 압축 알고리즘 사용

일반적인 gzip 이 아닌 보안성, 압축 효율이 높아진 Zstandard 압축 알고리즘을 사용할 수 있습니다. 이를 사용하기 위해 다음 설정이 필요합니다.

• MPM Mode Option 설정 IMQA 시작 코드 삽입 시 설정에서 zstd 사용 여부를 설정할 수 있습니다.

MyApplication.java or MyApplication.kt
...
imqaOption.setCompressZstd(true);
...

• Zstd 라이브러리 추가 ‘app.gradle’ 파일에서 ‘buildscript’ 내 ‘dependencies’ 블럭에 ‘zstd-jni’ aar 라이브러리를 추가합니다.

app.gradle(app module)
...
    dependencies {
    // dependencies 추가
       ...
       implementation 'com.github.luben:zstd-jni:1.5.2-3@aar'
       ...
    } 
} 

3. ProGuard 설정

ProGuard는 사용하지 않는 리소스를 제거하고 클래스나 메소드 이름을 짧게 축소하여 APK를 최대한 작게 만드는데 사용하는 도구입니다. ProGuard 또는 DexGuard를 사용하는 경우에는 아래 내용을 참고하여 매핑 파일을 업로드하여 원본 클래스, 메소드 이름으로 충돌 보고서에 표시 할 수 있습니다.

사전 준비

개발 중인 프로젝트에서 Proguard를 사용할 경우, 소스코드가 난독화 되어 해석이 어려워집니다. 이때, 생성되는 mapping.txt 파일을 이용하여 난독화된 코드를 해석할 수 있게 됩니다. Proguard 규칙(proguard-rules.pro)에 다음의 내용을 추가해주세요.

proguard-rules.pro
  -keepattributes SourceFile,LineNumberTable
  -printmapping map.txt

  # IMQA Proguard
  -keep class io.imqa.** { *; }
  -dontwarn io.imqa.**

  # okhttp3 Proguard
  -dontwarn okhttp3.**
  -dontwarn okio.**p

app/build/outputs/mapping/debug(또는 release)/mapping.txt 위치에 파일이 생성됩니다. (buildType과 flavor에 따라서 파일 위치가 조금 상이할 수 있습니다.) 이렇게 생성된 파일을 http://crash.imqa.io로 접속하여 업로드해야 합니다.

안드로이드의 경우 ‘mapping.txt’, ‘map.txt’ 와 같은 ‘txt’ 파일을 업로드합니다.

업로드 과정

1. 프로젝트 메뉴에서 프로가드 설정으로 들어갑니다.

2. [파일 선택] 버튼을 눌러 업로드 창을 열어 줍니다.

3. gradle 에 명시된 App version 에 맞는 매핑 파일을 업로드 합니다.

4. [등록] 버튼을 누르면 해당 버전에서 발생한 크래시 정보가 해석되어 보이게 됩니다.

최신 앱 버전이 릴리즈 된 경우, 해당 버전에서 발생한 크래시 정보를 보기 위해서는 동일한 앱 버전의 매핑 파일을 추가 등록해 주세요.

4. 설치형 고객 필수 설정

IMQA 설치형으로 설치를 진행하시는 고객사에서 반드시 수집 서버를 설정해주셔야 합니다.

MyApplication.java
@Override
public void onCreate() {
    super.onCreate();
    io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();

    /*
     * 기본값 : 'https://collector.imqa.io'
     * String : 서버 정보
     */
    imqaOption.setCrashServerUrl('https://(ipaddress)');

    io.imqa.crash.IMQACrashAgent.InitializeAndStartSession(
        this, // Application Context
        BuildConfig.FLAVOR, // Project Flavor Setting
        "PROJECT_KEY",  // 발급 받은 프로젝트 키
        imqaOption // 옵션을 설정할 경우 객체 추가
    );
}

Last updated