오류해결
Jni DETECTED Error
App Project에서 프로가드를 사용 하였으나, ADQ SDK에 대한 예외처리를 하지 않았을 경우 아래와 같이 JNI DETECTED ERROR
가 발생할 수 있습니다.
...
JNI DETECTED ERROR IN APPLICATION:
JNI NewGlobalRef called with pending exception
java.lang.NoSuchMethodError: no static or non-static
...
만약 귀사의 앱 프로젝트에서 프로가드를 사용중이시면 proguard-rules.pro
파일 실행 후 아래의 코드와 같이 예외처리를 진행합니다.
...
#- For LiteQ SDK
-keep class com.qwertlab.liteq.**{*;}
-keep class androidx.**{*;}
-dontwarn com.qwertlab.liteq.**
-dontwarn androidx.**
...
MultiDex Error
MultiDex 오류는 단일 Application에서 66536(64k)
이상의 Method
가 초과될 경우 MultiDex 오류가 발생 될 수 있습니다. MultiDex 오류를 해결하기 위해서는 다음과 같이 Multidex를 설정해야합니다.
...
trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.
...
Multidex 설정
build.gradle(Module:app) 파일의 defaultConfig 속성에 multiDexEnabled 속성을 true로 설정합니다.
...
android {
defaultConfig {
multiDexEnabled true
}
}
...
build.gradle(Module:app)
파일의 dependencies
속성에 multidex
library를 추가합니다.
...
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
...
MultiDexApplication을 상속 받는 Class를 구현 후 attachBaseContext() Method를 Override 하고 MultiDex.install() Method를 호출합니다.
만약 이미 Application을 상속 받는 Class를 구현하셨다면 Application 대신 MultiDexApplication을 상속 받도록 변경합니다.
public class ExampleApplication extends MultiDexApplication {
...
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
...
}
MultiDexApplication을 상속 받아 구현한 Class를 AndroidManifest.xml 파일의 application 속성에 아래와 같이 추가합니다.
...
<application
android:name=".ExampleApplication"
>
...
</application>
ETC
앞서 설명드린 오류와 별개로 발생하는 오류는 대부분 gradle 설정 정보로 인해 발생합니다.
샘플 앱 프로젝트를 참조하여 귀사의 프로젝트에 누락된 gradle 정보가 없는지 확인 부탁드립니다.
샘플 앱 프로젝트와 동일하게 설정하였음에도 불구하고 또 다른 오류가 발생할 경우 아래의 연락처로 문의 부탁드립니다.
Email : yahweh@qwertlab.com