본문 바로가기
개발/삽질

안드로이드 NoSuchMethodError: no static method 에러 발생시

by 창이2 2020. 12. 13.

안녕하세요. 

이번 포스팅에서  NoSuchMethodError: no static method 가 일어난 하나의 사례와 관련해서 적어보겠습니다.

라이브러리가 분명히 존재하고 있음에도 메소드를 찾을 수 없다고 나오는 경우는

프로가드 때문일 가능성이 많습니다. 

gradle에서

minifyEnabled true

이 부분이 코드축소를 설정하는 부분인데요. 

코드축소시 해당 라이브러리를 지워 찾을 수 없다는 에러를 가끔 접했습니다.

그래서 이 부분을 어떻게 해결하느냐 하면

안드로이드 스튜디오의 좌측에 앱 구조를 보시면 proguard-rules.pro 라는 파일이 있습니다.

 

 

이 파일을 여셔서 찾지 못하는 라이브러리의 패키지 명을 Keep 한다는 내용을 아래와 같이 적습니다.

 

-keep class com.arthenica.mobileffmpeg.*
-keepclassmembers class com.arthenica.mobileffmpeg.* {*;}

 

이후 gradle(:app) 파일로 가셔서

    buildTypes {
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

이렇게 프로가드 사용에 대해 명시하는 세팅을 해주시면 됩니다.

 

참고

https://developer.android.com/studio/build/shrink-code

 

앱 축소, 난독화 및 최적화  |  Android 개발자  |  Android Developers

사용하지 않는 코드와 리소스를 삭제하기 위해 출시 빌드에서 코드를 축소하는 방법을 알아보세요.

developer.android.com

 

댓글