본문 바로가기
개발/Android

갤럭시 S7에서 CameraX 사용 시 앱 죽는 문제 – Bad method handle type 7

by Dev Aaron 2020. 11. 8.
반응형

Google I/O 2019에서 새로 등장한 것 중 하나가 바로 Jetpack CameraX입니다.

사실 앱 만들 때 카메라가 필요한 경우가 많지 않아 그닥 경험이 없었습니다. (대학원 연구실에 있을 때 한번 만져보긴 했는데 그게 벌써 2012년도라 기억이 가물가물합니다 -0-) 그러다 최근 로또 앱을 만들면서 처음으로 사용해보게 되었는데요. 이왕 하는거 CameraX로 해보자는 생각에 적용해봤습니다.

그리고 최근 사내 이벤트 용으로 개발 중인 앱에도 마찬가지로 CameraX를 적용했는데요, 이상한 문제를 마주하게 되었습니다…

Suppressed: java.io.IOException: Failed to open dex files from /data/app/com.xxxx.xxxxx-di9DD6qxrAR9E5Y6uqJsKw==/base.apk because: Failure to verify dex file '/data/app/com.xxxx.xxxxx-di9DD6qxrAR9E5Y6uqJsKw==/base.apk': Bad method handle type 7

대략 위와 같은 로그와 함께 앱이 시작하자마자 죽었습니다.
바로 갤럭시 S7에서요!
제 폰은 S10e 이고, 잘 동작했습니다…
같이 개발 중인 팀원분이 알려주어 알게된 문제인데요…

로그만 대충 봤을 땐 dex file 읽기가 실패한 것인데요. 해당 문제는 작성한 코드 혹은 사용 중인 라이브러리에서 Java 8 고유의 기능 (람다와 같은)을 사용하고 있는데 빌드를 Java 8 이하로 했을 때 발생하는 문제라고 합니다.

따라서 문제 수정은 아래와 같이 코드를 추가하여 Java 8 로 컴파일하게 해주면 됩니다.

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

참고로 해당 솔루션은 아래 링크에서 찾을 수 있었습니다.

https://stackoverflow.com/questions/50121367/failed-to-verify-dex-bad-method-handle-type-7

반응형