Знайдено більше одного файлу із незалежним від ОС шляхом «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 меню виберіть Перенести в AndroidX ...
  2. краще перевірити можливість резервного копіювання проекту як zip-файлу на випадок помилки міграції,
  3. а потім після натискання кнопки « Перенести» ви зможете вибрати місце для збереження резервної копії zip.

тепер я можу будувати без проблем поки що.


Моє налаштування

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


7

Можна використовувати add у 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
Ви можете пояснити більше, щоб зрозуміти? Дякую.
Шантешвар Інде

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.