앱 프로젝트 구조가 기본적인 Android Project 구조가 아닌 경우, gradle 의 daemon 을 이용한 퀵빌드 설정이 되어있는 경우 또는 SDK 적용이 제대로 안되는 경우 ( 네이티브 화면 로딩시간(웹뷰X) , 네트워크 응답시간 등이 수집이 안되는 경우에 적용 가능합니다.
‘app.gradle’ 파일에서 ‘buildscript’ 내 ‘dependencies’ 블럭에 ‘imqa-mpm-injector’ 와 상단에 ‘plugin’을 추가합니다. 일반적으로 ‘<project_dir>/app/build.gradle’ 에 있습니다.
파일을 업데이트 한 후 Gradle 파일을 동기화 해야 합니다.
Kotlin DSL
3. Android Manifest에 권한 추가
AndroidManifest.xml 에 발생한 크래시 정보를 업로드 하기 위해 인터넷 권한을 주어야합니다.
4. 소스코드에 IMQA 초기화 코드 삽입
IMQA 시작 코드 작성
Activity 가 아닌 Application 클래스에 삽입해야 합니다.
이때 ‘PROJECT_KEY’ 부분에 복사한 ‘Project Key’ 값을 넣어줍니다.
MPM Mode Option
IMQA MPM 실행 옵션을 파라미터나 Option을 이용해 변경할 수 있습니다. Android MPM Configuration Options 에서 실행 옵션을 확인하세요.
단축 모드
단축모드를 이용하여 IMQA MPM을 초기화 할 수 있습니다.
HTTPS (API level > 27)
Android API 28 부터 강화된 네트워크 보안 정책에 의해 HTTPS 요청이 필요해졌습니다. 이를 해결하기위해 다음 조치가 필요합니다.
...
@Override
public void onCreate() {
super.onCreate();
io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();
imqaOption.setBuildType(false);
imqaOption.setUploadPeriod(true);
imqaOption.setKeepFileAtUploadFail(false);
imqaOption.setFileInterval(5);
imqaOption.setHttpTracing(true);
io.imqa.mpm.IMQAMpmAgent.getInstance()
.setOption(imqaOption) // MPM 의 동작 방식을 정하는 옵션을 설정합니다.
.setContext(this, BuildConfig.FLAVOR)
// Application Context 를 초기화 합니다. (Flavor 가 없는 경우 빈 문자열 삽입)
.setProjectKey("PROJECT_KEY")
// IMQA MPM Client 의 Project Key 를 설정합니다.
.init();
// 등록한 옵션을 초기화 및 실행합니다.
...
}
...
MyApplication.kt
...
override fun onCreate() {
super.onCreate()
val imqaOption : IMQAOption = io.imqa.core.IMQAOption()
imqaOption.setBuildType(false)
imqaOption.setUploadPeriod(true)
imqaOption.setKeepFileAtUploadFail(false)
imqaOption.setFileInterval(5)
imqaOption.setHttpTracing(true)
io.imqa.mpm.IMQAMpmAgent.getInstance()
.setOption(imqaOption)
// MPM 의 동작 방식을 정하는 옵션을 설정합니다.
.setContext(this, BuildConfig.FLAVOR)
// Application Context 를 초기화 합니다. (Flavor 가 없는 경우 빈 문자열 삽입)
.setProjectKey("PROJECT_KEY")
// IMQA MPM Client 의 Project Key 를 설정합니다.
.init();
// 등록한 옵션을 초기화 및 실행합니다.
...
}
...
MyApplication.java
...
@Override
public void onCreate() {
super.onCreate()
io.imqa.mpm.IMQAMpmAgent.getInstance()
.setContext(this, BuildConfig.FLAVOR) // Application Context 를 초기화 합니다. (Flavor 가 없는 경우 빈 문자열 삽입)
.setProjectKey("PROJECT_KEY") // IMQA MPM Client 의 Project Key 를 설정합니다.
.init() // 등록한 옵션을 초기화 및 실행합니다.
...
}
...
MyApplication.kt
...
override fun onCreate() {
super.onCreate()
io.imqa.mpm.IMQAMpmAgent.getInstance()
.setContext(this, BuildConfig.FLAVOR) // Application Context 를 초기화 합니다. (Flavor 가 없는 경우 빈 문자열 삽입)
.setProjectKey("PROJECT_KEY") // IMQA MPM Client 의 Project Key 를 설정합니다.
.init() // 등록한 옵션을 초기화 및 실행합니다.
...
}
...
...
@Override
public void onCreate() {
super.onCreate();
io.imqa.core.IMQAOption imqaOption = new io.imqa.core.IMQAOption();
/*
* 기본값 : 'https://main.collector.imqa.io'
* MPM 서버 URL을 설정합니다.
* String : 서버 정보
*/
imqaOption.setServerUrl('https://(IPAddress)');
io.imqa.mpm.IMQAMpmAgent.getInstance()
.setOption(imqaOption) // MPM 의 동작 방식을 정하는 옵션을 설정합니다.
.setContext(this, BuildConfig.FLAVOR) // Application Context 를 초기화 합니다. (Flavor 가 없는 경우 빈 문자열 삽입)
.setProjectKey("PROJECT_KEY") // IMQA MPM Client 의 Project Key 를 설정합니다.
.init() // 등록한 옵션을 초기화 및 실행합니다.
...
}
...