오랜만에 버그를 만나서 신난 개발자.
서드파티 라이브러리를 추가하는 과정에서 다음과 같이 에러를 접하게 되었습니다.
Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.ResultReceiver found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.ResultReceiver$1 found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules core-1.9.0-runtime (androidx.core:core:1.9.0) and support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Go to the documentation to learn how to Fix dependency resolution errors. |
Duplicate... 개발을 하다보면 많이 접하게 되는 무시한 단어이죠??
이 오류는 AndroidX와 android.support 라이브러리를 함께 사용하는 경우 발생합니다.
AndroidX는 android.support의 후속 프로젝트로, 두 라이브러리를 혼합하여 사용하는 경우 클래스 중복 문제가 발생할 수 있습니다.
해결 방법
1. AndroidX로 전환
AndroidX와 android.support를 혼합하지 않는 것이 가장 좋은 방법입니다. android.support 대신 AndroidX를 사용하도록 프로젝트를 마이그레이션하세요.
- gradle.properties에 AndroidX 활성화 추가
- android.useAndroidX=true: AndroidX 라이브러리로 자동 변환.
- android.enableJetifier=true: android.support 의존성을 자동으로 AndroidX로 변환.
-
properties코드 복사android.useAndroidX=true android.enableJetifier=true
- build.gradle에서 android.support를 제거하고 AndroidX로 교체
gradle코드 복사dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // 기타 AndroidX 라이브러리 }
- build.gradle에서 android.support 라이브러리 대신 AndroidX 라이브러리를 사용합니다. 예:
- 프로젝트를 동기화하고 문제를 해결하세요.
2. 특정 라이브러리 제거
중복된 android.support와 androidx.core 모듈 중 하나를 제거합니다.
- support-compat 제거
gradle코드 복사dependencies { // 제거 // implementation 'com.android.support:support-compat:26.1.0' }
- build.gradle에서 support-compat 라이브러리를 명시적으로 제거합니다.
- core 라이브러리 대신 다른 버전 사용
- core 라이브러리를 다른 버전으로 대체하거나, 프로젝트에 필요한 버전을 명확히 지정하세요.
3. Jetifier를 사용해 android.support를 AndroidX로 변환
기존에 사용 중인 써드파티 라이브러리가 android.support를 사용하고 있다면 android.enableJetifier=true를 통해 자동 변환하도록 설정하세요.
4. Gradle 종속성 충돌 해결
중복된 의존성을 명시적으로 해결하려면 resolutionStrategy를 사용합니다.
gradle
코드 복사
configurations.all { resolutionStrategy { force 'androidx.core:core:1.9.0' // AndroidX 사용 exclude module: 'support-compat' // support-compat 제거 } }
5. 라이브러리 충돌 확인
모든 의존성을 확인하여 android.support와 AndroidX 혼합 여부를 파악하세요.
shell
코드 복사
./gradlew app:dependencies
출력된 의존성 그래프에서 android.support와 androidx가 혼합된 경우 이를 수정하세요.
요약
- android.useAndroidX=true 및 android.enableJetifier=true를 설정합니다.
- android.support 라이브러리를 제거하고 AndroidX로 전환합니다.
- resolutionStrategy를 통해 중복된 라이브러리를 제거하거나 강제로 버전을 지정합니다.
- 필요한 경우 Gradle 의존성 그래프를 분석해 충돌 원인을 파악합니다.
이 단계를 수행하면 클래스 중복 문제를 해결할 수 있습니다.
해당 파일에
다음과 같이 추가하고 다시 빌드
끝.
'🖥 Programming > 📱 Android (Kotlin)' 카테고리의 다른 글
[Android][kotlin] 앱 하단바 색상 변경방법 (1) | 2024.12.18 |
---|---|
[해결방법] 개발자 프로필과 모든 앱이 2024년 9월 10일에 Google Play에서 삭제됩니다. (11) | 2024.07.25 |
[Android][kotlin] 레이아웃 StausBar(상단), NavigtationBar(하단) 전체 화면 (0) | 2024.06.24 |
[Android][kotlin] CustomDialog 만들기 (2) | 2024.06.11 |
[Android] Android Gradle plugin requires Java 17 to run. You are currently using Java 11. 해결방법 (2) | 2024.01.08 |
[Android] 머티리얼 디자인(Material Design) (0) | 2023.12.27 |
[Andorid][kotlin] 날짜형식 변경관련(SimpleDateFormat, getTimeZone) (2) | 2023.12.05 |
[Android] SSL Error Handler 구글 스토어 대응 (2) | 2023.11.23 |