Найдено более одного файла с независимым от ОС путем 'META-INF / proguard / androidx-annotations.pro'


79

Я пытаюсь выполнить Android 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версии библиотеки диспетчера работ:

Известная проблема

Если вы столкнулись со следующей проблемой: «Было найдено несколько файлов с независимым от ОС путем '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-alpha10версии WorkManager.


Это еще один случай, показывающий, насколько глупа экосистема разработки Android.
syloc

В моем случае мне пришлось добавить exclude 'META-INF/proguard/coroutines.pro'к упаковке еще и
опции

12

Я получил ту же ошибку, когда добавил следующее в раздел зависимостей build.gradle моего приложения:

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

После перехода на AndroidX :

  1. В Android Studio в меню Refactor выберите Migrate to AndroidX ...
  2. лучше проверьте возможность резервного копирования вашего проекта в виде zip-файла на случай сбоя миграции,
  3. а затем после нажатия кнопки « Перенести» вы сможете выбрать место для сохранения резервной копии в формате zip.

теперь я пока могу строить без проблем.


Моя установка

Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains
macOS 10.13.6


7

Можно использовать добавить в build.gradle (приложение) (ответил 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

Как новичок, у меня возникла эта проблема при использовании готового проекта для какого-то учебника, и указанное выше решение не сработало для меня.

Так что на случай, если кто-то столкнется с той же проблемой.

Мне пришлось обновить версию Gradle в build.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, что-то в этом роде, чем вы пробовали другие вещи.

У меня именно такая ситуация, и удаление старой реализации решило проблему.

Счастливая треска Ненад

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.