GPGS나 Firebase를 연동하면 Android Plugin 다운로드를 위해 External Dependency Manager를 사용하는 경우가 있습니다.
그런데 이 External Dependency Manager 때문에 빌드 시 큰 고생을 하는 경우가 많습니다. 그 중 가장 흔하게 볼 수 있는 에러가 Execution failed for task ':launcher:checkReleaseDuplicateClasses' 문제입니다.
문제 원인
해당 문제는 말 그대로 빌드 단계에서 중복된 클래스를 발생한 경우 출력됩니다. 개발을 할 때 동일한 클래스 이름을 가진 클래스를 구현하려고 하면 컴파일 에러가 나듯이, 빌드 시 여러 라이브러리를 병합하는데 동일한 클래스가 발견이 되어 빌드에 실패를 한 케이스입니다.
해결 방법
빌드 시 중복된 라이브러리들이 존재하지 않도록 조치를 취해야 합니다. 가장 흔하게 사용 되는 방법은 Force Resolve를 사용하는 것입니다.
이를 사용하면 기존의 라이브러리들을 모두 삭제하게 다시 다운로드를 받습니다. 가장 쉬운 방법이고 대부분의 문제를 이를 통해 해결 됩니다.
만일 Force Resolve를 이용했는데 Resolving Android Dependencies 창에서 라이브러리들을 다시 다운로드 받는 프로세스가 보이지 않고 바로 success가 출력되는 경우 불필요한 custom manifest와 custom gradle을 비활성화한 뒤 다시 시도를 해봐야 합니다.
Force Resolve를 이용해도 해결되지 않고 동일하게 duplicateClasses 에러가 출력되는 경우에는 Plugin/Android 디렉토리에 있는 `androidx.-----.-----.jar`, `androidx.-----.-----.aar`, `com.google.-----.-----.jar`, `com.google.-----.-----aar`, `org.jetbrains.-----.-----.jar`, 와 같은 라이브러리들을 직접 모두 삭제합니다.
Force Resolve를 사용했을때 버전업이 되어서 이름이 달라지게 된 라이브러리를 삭제하지 못합니다. (ex. androidx.core.core-1.2.0.aar과 androidx.core.core-1.1.3-alpha.aar) 이 경우 디렉토리에 구 버전의 라이브러리는 여전히 남아있는데 새로운 버전을 다운로드 받게 되어 빌드 과정 중 중복이 발생하게 됩니다.
'Unity' 카테고리의 다른 글
[Unity] Android ANR 기호화 (0) | 2023.11.24 |
---|---|
[Unity] 인게임 튜토리얼을 쉽게 개발하는 EasyTutorial 에셋 무료 배포 (0) | 2022.10.29 |