본문 바로가기

Programming/유니티

유니티(Unity) META-INF/kotlinx_coroutines_core.version

ㄴUndefined symbol : 유니티 Ios 빌드, Pod 설치 및 제거하기
ㄴ유니티 무한의 발판 만들기 (Unity - Infinity Vertical Jump Platform)
ㄴUGUI - UI Button OnClick 리스너 비활성화
ㄴ유니티(Unity) 스크롤 아이템의 높이를 텍스트 높이에 따라 변경
ㄴ유니티 애드몹 적용시 Proguard 유의사항

aar build error

유니티에서 안드로이드 빌드할 때 라이브러리들이 충돌이 나서 빌드가 되지 않을 때가 있습니다. 대처 방법에 대해 알아보겠습니다.

----

----

오류내용

> 2 files found with path 'META-INF/kotlinx_coroutines_core.version' from inputs:
- C:\project\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\libs\org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar
- C:\project\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\libs\org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar
Adding a packagingOptions block may help, please refer to
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
for more information 

위의 오류를 해결하기 위해 mainTemplate.gralde 파일에 다음과 같이 exclude 요소를 추가하였습니다.

android {
    packagingOptions {
        ...
        exclude ('META-INF/kotlinx_coroutines_core.version')
    }
}


하지만, 아래와 같은 오류가 다시 발생하였습니다.

> 2 files found with path 'META-INF/kotlinx_coroutines_core.version' from inputs:
- C:\users\.gradle\caches\transforms-3\467e49c0677236eb3b3a145e80f7ea57\transformed\jetified-org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar
- C:\Users\.gradle\caches\transforms-3\f6b90967b82368eef4b9bcbca5974182\transformed\jetified-org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar
Adding a packagingOptions block may help, please refer to
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
for more information

분명히 exclude ('META-INF/kotlinx_coroutines_core.version')을 추가하였는데 같은 내용으로 오류가 발생하였고 오류가 발생한 위치가 달라졌습니다.

해결 방법

Project Settings 창을 열고 Custom Main Gradle Template 활성, Custom Launcher Gradle Template 활성시킵니다. ( mainTemplate.gradle을 사용 중이라면 이미 Custom Main Gradle Template은 활성화 중일 것입니다. ) 이제 Assets/Plugins/Android 폴더 안을 살펴보면 mainTemplate.gradle과 launcherTemplate.gradle이 있는 것을 확인할 수 있습니다. 이제 두 파일 모두에 exclude를 추가해 주면 됩니다.

mainTemplate.gradle 파일
android {
    packagingOptions {
        ...
        exclude ('META-INF/kotlinx_coroutines_core.version')
    }
}

launcherTemplate.gradle 파일
android {
	packagingOptions {
        ...
        exclude ('META-INF/kotlinx_coroutines_core.version')
    }
}

 

다른 내용들은 수정할 필요 없이 exclude 만 추가하면 됩니다. launcherTemplate.gradle 파일 안에는 android { packagingOptions { }} 블록이 없으니 직접 작성해 넣으면 됩니다.