[Android] Caused by: java.lang.VerifyError: Verifier rejected class
안드로이드에서 아래와 같이 java.lang.VerifyError 발생한 경우.
|
Caused by: java.lang.VerifyError: Verifier rejected class com.packageName.className: void |
java.lang.VerifyError 오류를 검색해보니 아래 내용을 찾을 수 있었다.
|
1. 컴파일 시 사용한 라이브러리와 런타임 시 사용한 라이브러리 버전이 달라서 메서드 형태가 다른 경우 2. 사용한 라이브러리가 상위 버전의 JDK에서 컴파일 된 경우 => 결국은 라이브러리 버전을 맞춰야 한다. |
내 경우 안드로이드 프로젝트에 특정 라이브러리(aar 확장자 파일)를 추가하는 과정에서 java.lang.VerifyError 오류가 발생했다.
일단 안드로이드 프로젝트와 aar 파일과의 JDK버전 내지는 안드로이드 SDK 버전을 맞춰야 한다는 생각이 들었다.
해당 aar 을 반디집으로 풀어서 AndroidManifest.xml 을 열어보니 안드로이드 버전 29로 되어있었다.
내 프로젝트는 안드로이드 버전 28 이었는데, 어쩐 일인지 build.gradle을 29로 고치면 앱이 동작하지 않았다.
검색해보니 안드로이드 스튜디오 버전 4.0 이상에서 안드로이드 버전 29를 쓸 수 있다는 내용을 보았다.
내가 사용한 안드로이드 스튜디오는 버전 3.4 였다.
결국 안드로이드 스튜디오 4.0을 새로 설치하고, 작업중인 프로젝트를 로드했다.
결과적으로 안드로이드 스튜디오 4.0 에서는 VerifyError 가 발생하지 않았다.
버전을 29로 올리지도 않았다.
그냥 내 프로젝트는 여전히 버전 28이고, aar 은 버전 29였다.
추측이지만 해결된 이유는 aar 모듈이 안드로이드 스튜디오 4에서 만들어진 모듈이라서, 그걸 사용하는 프로젝트 역시 안드로이드 스튜디오 4에서 빌드해야 되는 것 같다.