오류해결


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


Top