[Android] Execution failed for task ‘:app:transformClassesAndResourcesWithProguardForRelease’
디버그 시에는 앱이 잘 실행되는데, 앱을 APK 로 만들면
Execution failed for task ‘:app:transformClassesAndResourcesWithProguardForRelease’ 오류가 발생하는 경우.
:app:transformClassesAndResourcesWithProguardForRelease 오류를 검색해보니 아래 내용을 찾을 수 있었다.
|
사용하는 라이브러리마다 참조하는 라이브러리 버전이 다 다를 경우, 메소드의 수가 계속 증가하여 64k개 이상을 가질 경우 위와 같은 에러가 발생한다. (중략) 확실한 해결 방법은 버전이 다른 라이브러리를 사용할 경우 하나로 고정시키는 방법이다. |
내 경우 안드로이드 프로젝트에서 특정 라이브러리를 새 버전으로 교체했다가 위 오류가 발생했다.
정확히 표현하면 기존 라이브러리(jar 확장자 파일, 예를 들어 A1.jar)을 삭제하고, 특정 라이브러리(aar 확장자 파일, 예를 들어 A2.aar)를 추가한 결과 위 오류가 발생했다.
내가 이해한 바는, 결국 라이브러리 충돌이 난다는 얘기인 것이다.
분명히 기존 라이브러리(A1.jar)를 지웠는데 말이다.
로그캣과 디버그 콘솔을 꼼꼼히 읽어보니 못보던 패키지명이 있었다.
패키지명을 쫓아가보니 내가 모르는 jar에 속했다. 다시 말해 어떤 jar을 하나 더 의존하는 것처럼 보였다. 이 jar를 B.jar 라고 하자.
A1.jar 와 함께 B.jar 까지 삭제했더니 위 오류가 해결됐다.
아래 테스트를 통해 더 확실히 알 수 있었다.
기존 앱에서 A1.jar 파일은 그대로 두고, B.jar 를 삭제했다.
앱에 아무런 빨간줄도 나오지 않았지만, 실행해보면 앱은 오류가 발생됐다.
앱은 직접적으로 A1.jar 만 의존하고 있지만, A1.jar 가 B.jar 를 의존하고 있어서 둘 다 지워야하는 대상이었던 것 같다.