在独立于操作系统的路径“ META-INF/proGuard/ androidx-annotations.pro”中发现不止一个文件

我正在尝试安卓 工作经理,代码是抛出错误“ 在独立于操作系统的路径“ META-INF/proGuard/ androidx-annotations.pro”中发现了不止一个文件”时运行,我尝试下面的 回答,这是没有帮助的。

工作管理器依赖项

Gradle (app)

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"
}
59932 次浏览

This is a known problem at the moment, Architecture Components Release Notes outline the issue and provides a solution to fix it until alpha10 version of work manager library:

Known Issue

If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:

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

So, in your case, android section should be like following:

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

Issue should be addressed properly in 1.0.0-alpha10 version of WorkManager.

Can use add in build.gradle(app) (answered by TheStrikeBone)

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

OR downgrade android.arch.work version into 1.0.0-alpha08

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

I got the same error when I added the following to my app's build.gradle dependencies section:

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

Following the Migration to AndroidX:

  1. In Android Studio, from the Refactor menu, select Migrate to AndroidX...
  2. better check the option to backup your project as a zip file in case the migration fails,
  3. and then after clicking Migrate you will get to choose the location to save the zip backup.

now I am able to build without problems so far.


My setup

Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains
macOS 10.13.6

Adding this to my apps build.gradle file solved my problem.

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

In my case, I solve the problem by setting androidx.room use the same version as androidx.lifecycle

As a beginner, I had this issue while using a pre-made project for in some tutorial, and above solution didn't work for me.

So in case someone face same problem.

I had to upgrade gradle version in build.gradle file for project:

buildscript {


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


Then I had to upgrade gradle wrapper in 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

Then, I set useAndroidX to true in gradle.properties file:

android.useAndroidX=true

That's it. I hope it helps.

Always look first for implementations in Gradle. maybe two implementations collide with each other.. maybe you did not delete card view v7, and added androidx card view, something like that than you try other things.

I have just that situation and removing old implementation solved the problem.

Happy codding Nenad

In my case adding below code on build.gradle helps to solve the problem.

android {
packagingOptions {
pickFirst '**'
}
}