使用操作系统独立路径“ META-INF / proguard / androidx-annotations.pro”找到了多个文件


79

我正在尝试android WorkManager,代码运行时抛出错误“运行OS独立路径'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"
}

Answers:


167

目前这是一个已知问题,《体系结构组件发行说明》概述了该问题,并提供了解决方案,直到alpha10工作管理器库版本发布为止:

已知问题

如果您遇到以下问题:“使用操作系统独立路径'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版本中应该正确解决该问题。


这只是另一个例子,展示了多么愚蠢的android开发生态系统。
syloc

就我而言,我还必须添加exclude 'META-INF/proguard/coroutines.pro'包装选项
Joaquin Iurchuk

12

将以下内容添加到应用程序的build.gradle依赖项部分时,出现了相同的错误:

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

迁移到AndroidX

  1. 在Android Studio中,从“重构”菜单中,选择“迁移到AndroidX ...”。
  2. 最好检查一下将项目备份为zip文件的选项,以防迁移失败,
  3. 然后单击“迁移”后,您将选择保存zip备份的位置。

到目前为止,我现在能够毫无问题地进行构建。


我的设定

Android Studio 3.2.1
JRE:1.8.0_152-release-1136-b06 x86_64
JVM:JetBrains
macOS 10.13.6的OpenJDK 64位服务器VM


7

可以使用add in 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

然后,我useAndroidXgradle.properties文件中设置为true :

android.useAndroidX=true

而已。希望对您有所帮助。


0

始终首先在Gradle中寻找实现。也许两个实现彼此冲突..也许您没有删除card view v7,而是添加了androidx card view,但是您尝试其他方法后却发现了类似的情况。

我只有这种情况,删除旧的实现即可解决问题。

内纳德快乐

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.