Android Gradle 빌드에서 같은 경로에 같은 파일을 두 번 이상 출력에 포함 할 수 없습니다. 귀하의 빌드에서 다른 장소에서 오는 두 개의 META-INF/DEPENDENCIES
파일이있었습니다. 응용 프로그램에서이 파일이 전혀 필요하지 않으므로 빌드 시스템에이 파일을 모두 무시하도록 지시하는 것이 가장 간단합니다. 이는 exclude
지시문이하는 것입니다.
빌드 시스템에 중 하나를으로 유지하도록 지시하는 pickFirst
지시문이 있습니다. 그것에 관한 세부 사항은 Android Gradle plugin 0.7.0: "duplicate files during packaging of APK"입니다.
Gradle의 Android 빌드는 중복 파일에 대해 다소 엄격하기 때문에 수명을 단축시킬 수 있습니다. 동일한 Java 클래스를 두 번 이상 포함하면 유사한 문제가 발생합니다. 일반적인 경우에는 "복수 dex 파일 정의"오류가 발생합니다 (Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat 참조).
기타 빌드 시스템은 좀 더 관대합니다. 자바에서 클래스 패스에 같은 클래스를 두 번 이상 포함 시키면 (예 : 사용되는 첫 번째 복사본이 사용되는 경우) 그 후에는 무시됩니다. 대부분의 경우 다루기가 쉽지만 몇 가지 문제가 있습니다. 가장 큰 것 중 하나는 파일의 여러 버전이 모르게 빌드에 들어가는 경우 미묘한 오류가 발생할 수 있다는 것입니다. 문제가 무엇인지 파악하기 어려울 수 있습니다. 알아낼 때 일반적으로 원하는 것을 포함하여 최종 출력물을 만드는 순서를 저글링하여 매우 복잡한 문제를 해결할 수 있지만 매우 복잡한 빌드에서는 달성하기 어려울 수 있습니다. 프로젝트에 새 라이브러리를 포함하는 것과 같이 관련없는 일을하는 것은 주문을 뒤엎고 많은 불행을 초래할 수 있습니다.
그런 이유로 Gradle은 중복 문제 해결 게임에서 "수상자"를 결정하기 위해 사물의 순서를 사용하지 않는 철학을 가지고 있으며 개발자가 모든 종속성을 명시 적으로 만들도록 강요합니다. Android가 Gradle 위에 구축 시스템을 구현 한 것은 그 철학을 따릅니다. 스콧 바르 타의 대답은 정확하지만,이다
방금 Android Studio 2.2로 업데이트되었으며이 오류가 발생했습니다. 'META-INF/DEPENDENCIES.txt'를 'META-INF/DEPENDENCIES'로 변경하여 수정되었습니다. –
Android Studio 2.2 이후 나 "META-INF/LICENSE"와 동일한 대신 – aez
이 줄을 추가하면 프로젝트를 빌드 할 때 영원히 중단됩니다. – Dan