본문 바로가기

Android Error

[Error] Program type already present 에러 처리

프로젝트 개발 중, 광고 SDK jar 파일을 libs 디렉토리에 추가해서 사용하고 있었다.

몇 일전 SDK의 버전을 높여달라는 요청이 와서 새로운 버전의 jar를 받아 파일을 교체하였다.

프로젝트 싱크 과정에서는 문제가 없었지만, APK를 뽑는 과정에서 Program type already present: [class path] 라는 에러가 발생했다.

 

이 에러는 클래스가 중복되어 발생되는 종속성 문제로 생각됐다.

구글에 검색을 해봐도 종속성을 제거하라는 해결 방법이 다수를 차지하고 있었다.

하지만, 이 프로젝트의 경우 라이브러리 파일을 교체하다가 발생했기 때문에 찾아본 방법들로 해결되지 않았다.

 

Android Studio에 Build 창에 표시된 에러 내역을 보았다.

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 에러의 원인이 나왔고 아래로 debug/0..210? 정도 여러 줄이 표시되었다. 아무래도 intermediates\transforms\dexBuilder 라는 경로에 문제가 생긴 것으로 보인다. 하지만, dexBuilder로 검색해보았을 때 정확히 어떤 역할을 하는지는 찾지 못했다.

 

project 기준으로 이곳에 위치하고 있다.

dexBuilder가 dex를 build할 때 생성되는 폴더라고 생각했고

상위의 build라는 디렉토리는 빌드할 때 새로 갱신되는 것으로 알고 있었다.

 

과감히 dexBuilder 폴더를 삭제를 감행 후 빌드 망치 아이콘을 눌러주니 해결되었다.