MPM 설정
안드로이드 MPM SDK 설정 방법을 한 눈에 확인하실 수 있습니다.
1. MPM 설치 옵션
Gradle File
gradle을 이용해 IMQA MPM 설치 모드를 변경할 수 있습니다.
ext {
/**
* @Default false
* MPM 의 모든 Injecting 과정을 실행합니다.
* true 설정시 모든 실행과정이 무시됩니다.
*/
IMQAStop = false
/**
* @Default true
* Activity Lifecycle Injecting 을 허용합니다.
* false 설정시 액티비티 맵이 보이지 않습니다.
*/
IMQALifecycle = true
/**
* @Default true
* Event Listener Injecting 을 허용합니다.
* false 설정시 이벤트 정보를 수집하지 않습니다.
*/
IMQAEventListener = true
/**
* @Default false
* WebView 관련 Injecting 을 허용합니다.
* false 설정시 웹뷰내 HTTP/S 요청을 수집하지 않습니다.
*/
IMQAWebview = false
/**
* @Default true
* Fragment 수집 여부를 설정합니다.
* false 설정시 Fragment 의 렌더링 속도를 수집하지 않습니다.
*/
IMQAFragment = true
/**
* @Default true
* Network 수집 메소드를 감쌉니다.
* false 설정시 Network 관련 응답속도를 수집하지 않습니다.
*/
IMQANetwork = true
/**
* @Default ""
* 현재 빌드 환경의 Flavor 를 직접 설정합니다.
* 미 설정시 플러그인이 자동으로 찾습니다.
*/
IMQAFlavor = "debug";
/**
* @Default "/build/intermediates/manifests/full/"
* 현재 빌드 환경의 Manifest 위치를 직접 설정합니다.
* 미 설정시 플러그인이 자동으로 찾습니다.
*/
IMQAManifestLocation = "/build/intermediates/manifests/full/"
/**
* @Default true
* Repackaging 모드를 설정합니다.
* false 설정시 Compile 중에 Inject 를 수행합니다.
*/
IMQARepackaging = false
/**
* @Default true
* Mapping File 생성시 자동으로 업로드 합니다.
* 미 설정시 IMQA 에 접속하여 앱 버전별 mapping.txt 를 올려주어야 합니다.
*/
IMQAMappingUpload = true
/**
* @Default ""
* 현재 앱의 프로젝트 키를 설정합니다.
* mapping.txt 파일을 바로 올리게 할경우 설정이 필요합니다.
* 미 설정시 Build Log에 업로드 실패 메세지가 뜰 수 있습니다.
*/
IMQAProjectKey = "";
/**
* @Default "http://main.mpm.imqa.io"
* mapping.txt 파일을 업로드할 Host 명을 넣습니다.
* mapping.txt 파일을 바로 올리게 할경우 설정이 필요합니다.
* 미 설정시 Build Log에 업로드 실패 메세지가 뜰 수 있습니다.
*/
IMQAMapUploadServer = "http://main.mpm.imqa.io"
}File 빌드 설정 값 설명
stop
false
MPM의 모든 Injecting 과정을 실행합니다. \n true 설정 시 모든 실행과정이 무시됩니다.
mpm
true
MPM 용 SDK를 설치합니다. false 설정 시 MPM 라이브러리를 사용할 수 없습니다.
crash
true
Crash 용 SDK를 설치합니다. false 설정 시 Crash 라이브러리를 사용할 수 없습니다.
core
true
IMQA Core SDK를 설치합니다. false 설정 시 Core 라이브러리를 사용할 수 없습니다.
repackaging
true
Repackaging 모드를 설정합니다. false 설정 시 Compile 중에 Inject를 수행합니다.
lifecycle
true
Activity Lifecycle Injecting을 허용합니다. false 설정 시 액티비티 맵이 보이지 않습니다.
event_listener
true
Event Listener Injecting을 허용합니다. false 설정 시 이벤트 정보를 수집하지 않습니다.
fragment_lifecycle
true
Fragment 수집 여부를 설정합니다. false 설정 시 Fragment의 렌더링 속도를 수집하지 않습니다.
webview
true
WebView 관련 Injecting을 허용합니다. false 설정 시 웹뷰내 HTTP/S 요청을 수집하지 않습니다.
network
true
Network 수집 메소드를 감쌉니다. false 설정 시 Network 관련 응답속도를 수집하지 않습니다.
manifest_location
""
현재 빌드 환경의 Manifest 위치를 직접 설정합니다. 미 설정 시 플러그인이 자동으로 찾습니다.
flavor
""
현재 빌드 환경의 Flavor 를 직접 설정합니다. 미 설정 시 플러그인이 자동으로 찾습니다.
mapping_upload
true
Mapping File 생성 시 자동으로 업로드 합니다.
map_upload_server
"http://main.mpm.imqa.io"
Network 수집 메소드를 감쌉니다. false 설정 시 Network 관련 응답 속도를 수집하지 않습니다.
project_key
""
현재 앱의 프로젝트 키를 설정합니다. mapping.txt 파일을 바로 올리게 할 경우 설정이 필요합니다. 미 설정 시 Build Log에 업로드 실패 메세지가 뜰 수 있습니다.
MPM Run Option
IMQA MPM 모드를 파라미터나 Option을 이용해 변경할 수 있습니다.
File 런타임 설정 값 설명
buildType
false
IMQA의 데이터 수집 여부를 설정합니다. - true: 데이터를 수집하지 않습니다. - false: 데이터를 수집합니다.
printLog
false
Log 출력 여부를 설정합니다. true 설정 시 IMQA의 Log가 출력됩니다.
dump_interval
30000
덤프 간격을 ms(밀리초) 단위로 설정합니다.
file_interval
5
덤프가 저장되는 파일 간격을 분단위로 설정합니다.
upload_period
false
파일 업로드를 주기적으로 보내는지 설정합니다. 앱이 실행되는 동안 FileInterval 간격에 맞춰 업로드를 합니다. false 설정시 앱 재실행 시에만 수집 데이터를 업로드 합니다.
socket_tracing
true
Socket 관련 정보 수집 기능을 설정합니다. true 설정 시 앱이 실행되는 동안 Socket을 이용 네트워크 통신 정보를 수집하여 저장합니다.
http_tracing
true
HTTP 관련 정보 수집 기능을 설정합니다. true 설정 시 앱이 실행되는 동안 HTTP 정보를 수집하여 저장합니다.
keep_file_on_fail
true
측정된 성능 파일을 성공할 때까지 남겨두는지 설정합니다. 업로드에 성공할 때까지 파일을 내부에 보관합니다. false 설정시 업로드에 실패하더라도 파일을 삭제합니다.
mpm_server_url
http://main.collector.imqa.io
MPM 서버 URL을 설정합니다.
force_https
false
true 설정 시 업로드 서버의 인증서(SSL)를 무시하고 HTTPS 통신을 합니다.
end_date
(없음)
종료 날짜를 설정합니다.
os_version_limit_list
[]
동작할 OS 버전을 설정합니다.
app_version_limit_list
[]
동작할 앱 버전을 설정합니다.
dump_size_max
10
덤프 데이터 최대 용량을 설정합니다. (단위 MB)
behavior_max
15
행동분석 데이터 최대 수를 설정합니다.
MPM 독립 실행
특정 Task에서 IMQA MPM Injector를 실행할 수 있습니다. 단, 위 방법을 사용하는 경우 실행 위치에 따라 정상적으로 코드 삽입이 이루어지지 않을 수 있습니다.
네트워크 수집 설정
IMQA MPM 프레임워크에서는 네트워크 수집에 대해서 자동으로 측정 하나 특정 라이브러리의 경우 수동으로 설정을 진행해주어야 합니다.
AsyncHttpClient 대응
AsyncHttpClient 라이브러리를 사용하여 네트워크 요청시 다음과 같이 추가해 주십시오.
Custom User ID 등록
성능 데이터 수집 시 특정 사용자를 식별하기 위한 ID 정보를 설정할 수 있습니다. 사용자 ID 정보를 설정한 후, MPM 행동분석 에서 사용자 ID 정보로 행동 흐름을 조회할 수 있습니다.
Custom User ID 등록시, 사용자 식별을 위해 사용자 로그인 후의 화면, 홈 화면 또는 스플래시 화면에 추가해 주세요.
IdentifierCollector
setCustomUserId(STRING)
사용자 ID-1 (Primary)
IdentifierCollector
setCustomUserName(STRING)
사용자 ID-2
IdentifierCollector
setCustomUserMail(STRING)
사용자 ID-3
SDK에서 사전 정의한 사용자의 ID 정보가 수집되었을 경우, MPM 행동분석 및 Crash 사용자별 에러 목록에서 사용자 ID 정보로 데이터 조회가 가능합니다.

Custom Screen 측정
IMQA에서 연속 선상의 네이티브 화면을 묶어 하나의 가상 화면 단위를 정의하고, 해당 단위의 성능을 분석할 수 있습니다. 가상 화면으로 정의할 시작 네이티브 화면에서 startScreen, 종료 네이티브 화면에서 endScreen 정의하여 손쉽게 가상 화면 단위 생성 및 추적이 가능합니다. 가상 화면명은 동일한 텍스트로 정의해 주세요.
가상 화면 측정 시, 연속 선상이 아닌 네이티브 화면을 구간으로 정의하는 경우, 정확한 단위 성능이 측정되지 않을 수 있습니다.
가상 화면 측정 시작
CustomScreenName 에 설정하고자 하는 화면명을 입력합니다.
가상 화면 측정 종료
측정을 끝내고자 하는 액티비티에서 함수를 종료합니다. 종료 시점은 onResume 로 고정합니다. startScreen 함수에서 입력한 화면명과 동일하게 입력합니다.
SDK에서 사전 정의한 Custom Screen이 수집되었을 경우, IMQA에서 새로운 네이티브 화면 단위로 성능 분석이 가능합니다.
2. ProGuard 설정
ProGuard 설정
ProGuard는 사용하지 않는 리소스를 제거하고 클래스나 메소드 이름을 짧게 축소하여 APK를 최대한 작게 만드는데 사용하는 도구입니다. ProGuard 또는 DexGuard를 사용하는 경우에는 아래 내용을 참고하여 매핑 파일을 업로드하여 원본 클래스, 메소드 이름으로 충돌 보고서에 표시 할 수 있습니다.
사전 준비
개발 중인 프로젝트에서 Proguard를 사용할 경우, 소스코드가 난독화 되어 해석이 어려워집니다. 이때, 생성되는 mapping.txt 파일을 이용하여 난독화된 코드를 해석할 수 있게 됩니다.
Proguard 규칙(proguard-rules.pro)에 다음의 내용을 추가해주세요.
app/build/outputs/mapping/debug(또는 release)/mapping.txt 위치에 파일이 생성됩니다. (buildType 과 flavor 에 따라서 파일 위치가 조금 상이할 수 있습니다.) 이렇게 생성된 파일을 업로드해야 합니다.
안드로이드의 경우 ‘mapping.txt’, ‘map.txt’ 와 같은 ‘txt’ 파일을 업로드합니다.
업로드 과정
1. 프로젝트 메뉴에서 프로가드 설정으로 들어갑니다.
2. [파일 선택] 버튼을 눌러 업로드 창을 열어 줍니다.
3. gradle 에 명시된 App version 에 맞는 매핑 파일을 업로드 합니다.
4. [등록] 버튼을 누르면 해당 버전에서 발생한 크래시 정보가 해석되어 보이게 됩니다.
최신 앱 버전이 릴리즈 된 경우, 해당 버전에서 발생한 크래시 정보를 보기 위해서는 동일한 앱 버전의 매핑 파일을 추가 등록해 주세요.
3. MPM Webview Guide
MPM 단독 사용 (WebviewAgent 설치)
웹뷰 데이터 수집을 원한다면 웹뷰를 제공하는 웹 페이지에 IMQA Webview Javascript 라이브러리를 삽입해 주어야 합니다. 원하는 경우 파일을 다운받아 웹 서버에서 직접 제공할 수 있습니다. (크로스 오리진 문제 발생시 직접 import 해서 쓰시는걸 권장드립니다.)
IMQA WebviewAgent는 2가지 방식으로 설치 방법을 제공하고 있습니다. CDN 서버로 연결하거나, 설치형 혹은 CDN으로 요청을 못하시는 경우 해당 스크립트를 다운로드 받아서 사용 가능합니다. 아래의 링크를 통해서 마우스 오른쪽 버튼을 누른 후 “다른 이름으로 저장”을 눌러서 연결해 주세요.
WebviewAgent : https://cdn.imqa.io/agent/webview-agent.js
CDN 서버에서 받아오기
IMQA WebviewAgent는 스크립트를 html의 <head> 내부 최상단에 삽입해 주셔야 합니다.
로컬에 설치하기
설치형 혹은 CDN으로 요청을 못하시는 경우 해당 스크립트를 다운로드 받아서 사용 가능합니다. 이 링크를 통해서 마우스 오른쪽 버튼을 누른 후 “다른 이름으로 저장”을 눌러서 연결해 주세요.
Android Agent 설정
MPM은 WebView 에 관련된 페이지 및 요청을 수집합니다. WebviewInterface 와 WebViewBridge 를 추가해 주어야 WebView에서 발생한 에러 정보를 수집할 수 있습니다.
Android WebView 화면 모드 전환 대응
웹뷰가 호출한 웹 페이지에서 가로, 세로 화면 모드 전환이 있는 경우, 화면 모드 전환에 대한 상태 수집이 필요합니다. MPM 행동분석 표시 및 웹뷰 화면 단위 성능 수집시, 정확한 화면 구분을 위해 화면 모드 전환 상태를 웹뷰에 전달합니다.
SPA 전용 옵션
SPA에서는 하나의 index.html을 기준으로 수집되기에 page 변경에 대한 이벤트가 없습니다. SPA 전용 옵션을 설정하여 path가 변경되었을 때 기준으로 일정 시간까지를 수집하실 수 있습니다. SPA에서는 path 변경 시 특정 DOM이 교체되므로, 이 특정 DOM을 Agent 옵션에 타겟으로 설정하면 정상적으로 SPA에서도 페이지 로딩시간을 수집할 수 있습니다.
SPACollectInitTime
number
3000
- 기본값: 3000 (3초) - SPA 성능 데이터 수집 간격을 ms(밀리초) 단위로 설정합니다.
- path가 변경되면 설정된 수집 시간 동안 데이터를 수집합니다.
SPARootDom
string
“#app”
- CSS 셀렉터 스타일로 타겟이되는 DOM을 설정합니다.
- 타겟이된 DOM 기준으로 DOM 변경을 감지합니다.
(ID : #app, Class : .app)
- 중복되는 셀렉터를 타겟으로 설정하면 정상적으로 수집이 되지 않습니다.
필수 설정과 SPA 전용 옵션을 적용한 스크립트는 아래와 같습니다.
WebviewAgent Console.log 표시 옵션
IMQA WebviewAgent의 콘솔 로그를 표시하거나 끌 수 있습니다.
imqa_log
boolean
true
- true: IMQA Agent의 콘솔 로그를 표시합니다.
- false: IMQA Agent의 콘솔 로그를 표시하지 않습니다.
필수 설정과 console.log 표시 옵션을 적용한 스크립트는 아래와 같습니다.
5. MPM HTTPS Guide
HttpsURLConnection 대응
IMQA Client는 HttpsURLConnection 기반의 네트워크 요청을 수집할 수 있습니다. HttpsURLConnection 기반의 네트워크 요청 시 다음과 같이 추가해 주세요.
HttpsURLConnection
OkHttp 대응
IMQA Client는 OkHttp 기반의 네트워크 요청을 수집할 수 있습니다. OkHttp 기반의 네트워크 요청 시 다음과 같이 추가해 주세요.
OkHttp Client
1. OkHttp3
2. Retrofit 2.0
이미지 로딩 라이브러리 대응
1. Picasso
picasso 의 경우 okhttp 사용시 기본 downloader로 okhttp를 선택하게 됩니다. 이 downloader에 언터셉터를 추가하기 위해 아래와 같이 추가해 줍니다. 먼저 OkHttp3Downloader 의존성을 추가합니다.
2. Glide
Glide의 경우 HttpUrlConnection을 기본 http 라이브러리로 사용합니다. okhttp 사용을 원할 경우 OkHttpClient를 registry에 설정해 줍니다.
HttpClient 대응
IMQA Client는 HttpClient 기반의 네트워크 요청을 수집할 수 있습니다. HttpClient 기반의 네트워크 요청 시 다음과 같이 추가해 주세요.
HttpClient
1. HttpClient (org.apache.http.legacy)
2. HttpClient (cz.msebera.android.httpclient)
Volley 대응
IMQA Client는 Volley 기반의 네트워크 요청을 수집할 수 있습니다. Volley 기반의 네트워크 요청 시 다음과 같이 추가해 주세요.
Volley
1. Volley (com.android.volley)
현재 버전에서의 이슈 사항
Interceptor 기능을 수동으로 삽입해 주어야 합니다. (현재 HTTPUrlConnection, Okhttp, Retrofit, HttpClient(org.apache, cz.msebera) 자동 설치를 지원하고 있습니다.)
Last updated