OS 독립 경로 'META-INF / proguard / androidx-annotations.pro'가있는 파일이 두 개 이상 발견되었습니다.


79

나는 안드로이드 WorkManager를 시도하고 있는데 , 코드는 " 운영체제 독립적 인 경로 'META-INF / proguard / androidx-annotations.pro'에서 하나 이상의 파일을 찾았습니다. "라는 오류를 던지고 있습니다. 다음 답변을 시도했지만 도움이되지 않았습니다.

WorkManager 종속성

build.gradle (앱)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {
    def work_version = "1.0.0-alpha09"
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "android.arch.work:work-runtime:$work_version"
}

답변:


167

이것은 현재 알려진 문제입니다. 아키텍처 구성 요소 릴리스 노트 는 문제를 간략하게 설명하고 alpha10작업 관리자 라이브러리 버전 까지 해결하는 솔루션을 제공합니다 .

알려진 문제

다음 문제가 발생하는 경우 : "OS 독립 경로 'META-INF / proguard / androidx-annotations.pro'에서 두 개 이상의 파일이 발견되었습니다."문제를 해결하는 동안 임시 해결 방법으로 gradle 파일에 다음을 입력하십시오. alpha10의 문제 :

 android {
     packagingOptions {
         exclude 'META-INF/proguard/androidx-annotations.pro'
     }
 }

따라서 귀하의 경우 android 섹션은 다음과 같아야합니다.

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // Temporary fix until alpha10
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

1.0.0-alpha10WorkManager 버전 에서 문제가 제대로 해결되어야합니다 .


이것은 안드로이드 개발 생태계가 얼마나 어리석은지를 보여주는 또 다른 사례입니다.
syloc 19

제 경우에는 exclude 'META-INF/proguard/coroutines.pro'또한 packagingOptions 에 추가 해야했습니다
Joaquin Iurchuk

12

내 앱의 build.gradle 종속성 섹션에 다음을 추가 할 때 동일한 오류가 발생합니다.

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

AndroidX로 마이그레이션 한 후 :

  1. Android Studio의 Refactor 메뉴에서 Migrate to AndroidX ...를 선택합니다 .
  2. 마이그레이션이 실패 할 경우 프로젝트 를 zip 파일로 백업 하는 옵션을 확인하는 것이 좋습니다 .
  3. 마이그레이션 을 클릭하면 zip 백업을 저장할 위치를 선택하게됩니다.

지금까지 문제없이 지을 수 있습니다.


내 설정

Android 스튜디오 3.2.1
JRE : 1.8.0_152-release-1136-b06 x86_64
JVM : JetBrains
macOS 10.13.6의 OpenJDK 64 비트 서버 VM


7

build.gradle (app)에서 추가를 사용할 수 있습니다 ( TheStrikeBone 에 의해 답변 ).

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

또는 android.arch.work버전을 다음으로 다운 그레이드1.0.0-alpha08

dependencies {
    implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
}

5

이것을 내 앱 build.gradle 파일에 추가하면 문제가 해결되었습니다.

android {
  packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
  }
}

1
이해하기 위해 더 설명 할 수 있습니까? 감사.
Shanteshwar Inde

0

제 경우에는 androidx.room이 androidx.lifecycle과 동일한 버전을 사용하도록 설정하여 문제를 해결합니다.


0

초보자로서 일부 튜토리얼에서 미리 만들어진 프로젝트를 사용하는 동안이 문제가 발생했으며 위의 솔루션이 저에게 적합하지 않았습니다.

그래서 누군가가 같은 문제에 직면했을 때.

build.gradle프로젝트 파일 에서 gradle 버전을 업그레이드해야 했습니다.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'        
    }
}
...

그런 다음 gradle 래퍼를 gradle-wrapper.properties다음 에서 업그레이드해야했습니다 .

#Wed Sep 26 11:30:41 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

# Delete this
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

# Add this
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

그런 다음 파일 useAndroidX에서 true로 설정 했습니다 gradle.properties.

android.useAndroidX=true

그게 다야. 도움이되기를 바랍니다.


0

항상 Gradle의 구현을 먼저 찾으십시오. 아마도 두 가지 구현이 서로 충돌 할 수 있습니다. 아마도 카드보기 v7을 삭제하지 않았고 androidx 카드보기를 추가했습니다.

나는 그 상황을 가지고 있으며 이전 구현을 제거하면 문제가 해결되었습니다.

해피 코딩 Nenad

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.