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

나는 안드로이드 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"
}



답변

이것은 현재 알려진 문제입니다. 아키텍처 구성 요소 릴리스 노트 는 문제를 간략하게 설명하고 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 버전 에서 문제가 제대로 해결되어야합니다 .


답변

내 앱의 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


답변

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'
}


답변

이것을 내 앱 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'
  }
}


답변

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


답변

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

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

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

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


답변

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

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

해피 코딩 Nenad