Было найдено несколько файлов с независимым от ОС пути "META-INF/LICENSE"

Когда я создаю свое приложение, я получаю сообщение об ошибке.

Ошибка: не удалось выполнить задачу ': app: transformResourcesWithMergeJavaResForDebug'. Найдено более одного файла с независимым от ОС путем "META-INF/LICENSE"

Это мой файл build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "cn.sz.cyrus.kotlintest"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions{
            annotationProcessorOptions{
                includeCompileClasspath = true
            }
        }
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
 /*       exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'*/
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    compile 'com.github.GrenderG:Toasty:1.2.5'
    compile 'com.orhanobut:logger:1.15'

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.umeng.analytics:analytics:latest.integration'
    compile 'ai.api:libai:1.4.8'
    compile 'ai.api:sdk:[email protected]'
// api.ai SDK dependencies
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'commons-io:commons-io:2.4'
    compile 'com.android.support:multidex:1.0.1'
}

когда я добавлю этот код в мой файл Gradle.

  packagingOptions {
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
        }

Эта ошибка будет решена, но возникнет другая проблема. как это

java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)

У кого есть идеи как это решить?

Ответ 1

Вы можете добавить это в свой yourProject/app/build.gradle внутри android{}

android {      
      packagingOptions {
        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'
      }          
}

Ответ 2

В моем случае этого было достаточно, чтобы исключить только путь "META-INF/yourProject/app/build.gradle " на yourProject/app/build.gradle внутри android{}. Вот

packagingOptions {
    exclude 'META-INF/LICENSE'
}

Затем выполните проект "Очистить проект и перестройку".

Ответ 3

Решения здесь не помогли мне, но эта ссылка сделала.

Если у вас есть библиотека, в которую добавляются некоторые файлы Android.so - например, libassmidi.so или libgnustl_shared.so - вы должны указать gradle выбрать один из них при упаковке, иначе вы получите конфликт.

android {
  packagingOptions {
    pickFirst 'lib/armeabi-v7a/libassmidi.so'
    pickFirst 'lib/x86/libassmidi.so'
  }
}

У меня была эта проблема при использовании приложения React Native в качестве библиотеки в проекте Android. Надеюсь, поможет

Ответ 4

Имел подобное сообщение

Ошибка: выполнение выполнено для задачи: app: transformResourcesWithMergeJavaResForDebug. Было найдено более одного файла с независимым от ОС "постоянным значением.html"

Чтобы разрешить это, мне пришлось включить просмотр пакетов (1) в Android Studio, затем просмотреть дерево в библиотеках и найти дубликаты (2)

Затем, ctrl + alt + f12 (или меню RMB) (3) - и найдите библиотеки, которые вызвали проблему. Сделал список файлов внутри этих библиотек, которые вызвали проблемы, и написал их в файл build.gradle app в разделе android. Другой вариант - иметь дело с библиотекой, содержащей дубликаты файлов

packagingOptions {
    exclude 'allclasses-frame.html'
    exclude 'allclasses-noframe.html'
    <..>

enter image description here

Ответ 5

В основном, когда gradle объединяет файл apk, он копирует контент из всех зависимостей компиляции, он достаточно интеллектуальный, чтобы увидеть, что есть дубликат файла... из двух разных файлов jar. Это может быть любой файл, такой как a.txt или META-INF/DEPENDENCIES. Лучше всего исключить эти файлы, используя приведенное ниже, в случае, если файл присутствует там только для информационных целей.

android{
    packagingOptions {
       exclude 'META-INF/DEPENDENCIES'
    }
}

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

Ответ 6

У меня была такая же проблема, и я попробовал это

Ошибка: найдено несколько файлов с независимым от ОС путем "META-INF/proguard/androidx-annotations.pro"

Решение: все, что вам нужно сделать, чтобы это исправить, это добавить это в раздел android {} в вашем приложении build.gradle.

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

Ответ 7

Это происходит при использовании

org.jetbrains.kotlinx: kotlinx-сопрограмма-ядро: 1.2.0

И исправлено в следующей версии

org.jetbrains.kotlinx: kotlinx-сопрограмма-ядро: 1.2.1

Ответ 8

Я столкнулся с одной и той же ошибкой, и обнаружил, что она возникла из-за того, что разные модули содержали одни и те же классы из разных пакетов.

Например, один использованный пакет androidx, а другой использованный пре-andxx

Я решил это, перенеся модуль pre-androidx на androidx с помощью встроенной функции Android Studio: "Refactor → Migrate to Androidx...", не исключая ничего.


В вашей ситуации вы можете проверить наличие несоответствий между модулями.

Ответ 9

Я обновил Studio от Java 7 до Java 8, и эта проблема возникла. Тогда я решил это так:

android {
    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}

Ответ 10

В моем приложении я добавляю зависимости jar следующим образом:

implementation files('libs/json-simple-1.1.1.jar')

Но я понял, что они уже были добавлены из-за следующей первой строки в зависимостях:

implementation fileTree(include: ['*.jar'], dir: 'libs')

Эта строка добавляет все фляги в папке lib к зависимости приложения.

Следовательно, после удаления дополнительных implementation files('libs/json-simple-1.1.1.jar') зависимостей implementation files('libs/json-simple-1.1.1.jar')

это работает нормально.

Ответ 11

Я прочитал все ответы, связанные с получением этого сообщения в Android Studio:

Найдено несколько файлов с независимым от ОС путем "META-INF/LICENSE"

но в этом случае исключение классов не является необходимым, нам нужно только исключить 'META-INF/DEPENDENCIES', это можно сделать внутри /app/build.gradle:

android{
    ...
    ...
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
    }

}

Ответ 12

У меня та же проблема, и я попробовал это

Ошибка: найдено более одного файла с независимым от ОС путем "META-INF/library_release.kotlin_module"

Решение:

android {
    packagingOptions {
    exclude 'META-INF/library_release.kotlin_module'
    }
}

https://github.com/WindSekirun/NaraeImagePicker/issues/7

Работал на меня....

Ответ 13

У меня была аналогичная проблема. я получал сообщение об ошибке -

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

More than one file was found with OS independent path 'javax/annotation/WillCloseWhenClosed.java'

Как указано в некоторых из приведенных выше ответов, использование приведенного ниже кода работает

'packagingOptions {
       exclude 'allclasses-frame.html'
    }'

Но я получал эту ошибку для 20 разных файлов, поэтому после исключения 20 файлов я остановился и попытался найти достойное решение. Я также столкнулся с

'Unable to execute dex: Multiple dex files' error.

Наконец-то мне удалось это решить.

Во-первых (как в моем случае WillCloseWhenClosed.java был дублирующим файлом), в студии android у вас есть опция поиска везде. Напишите и найдите файл там. Там я нашел несколько экземпляров этого файла. Поэтому я нажал на оба экземпляра и увидел их местоположение, щелкнув правой кнопкой мыши на файле и увидев его местоположение, когда они открылись в студии Android.

Во-вторых, я понял, что у меня есть некоторые зависимости в файле gradle. Я использовал приведенный ниже код

dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
}

а также у меня были такие же почтовые пакеты в каталоге:\Users\user\AndroidStudioProjects\git\appname\app\libs\google-http-client-1.23 !.

Таким образом, это было излишним, и поэтому град находит 2 файла. Поэтому я удалил свои почтовые пакеты и решил для меня ошибки. Будьте осторожны при этом. Вы должны выяснить, какой файл или пакет нужно удалить.

В-третьих, gradle также делает zip этих файлов ошибок в этом месте (по крайней мере, для меня это сделано) - C:\Program Files\Android\Android Studio\gradle\m2repository\com\google\code\findbugs\jsr305\1.3. 9\jsr305-1.3.9.jar!

поэтому я пошел и удалил файл jsr305-1.3.9.jar отсюда также.

Если вы все еще сбиты с толку, просто зайдите в поисковую систему в Android-студии, найдите там экземпляры своего файла, и вам придется удалить один из них. Потратьте время и выясните, какой из них.

Ответ 14

Я столкнулся с этой проблемой, сначала с некоторыми нативными библиотеками (.so файлами), а затем с файлами java/kotlin. Оказалось, что я включал библиотеку из источника, а также ссылался на артефакт через транзитивную зависимость. Проверьте ваше дерево зависимостей, чтобы увидеть, есть ли какие-либо избыточные записи. Используйте ./gradlew :app:dependencies чтобы получить дерево зависимостей. Замените "app" на имя вашего модуля, если имя основного модуля отличается.

Ответ 15

Попробуйте удалить multidex из конфигурации по умолчанию и проверьте журнал ошибок сборки. Если этот журнал может быть связан с классом INotification. Используйте это в Android {}

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

Это помогает мне.

Ответ 16

Для меня ниже решение работало, вы тоже можете получить помощь, я написал ниже строку в файле приложения Gradle

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

Ответ 17

Другое решение, которое я нашел. Убедитесь, что ваши версии одинаковы для тех же родительских и дочерних библиотек в gradle, как показано ниже:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    **implementation 'com.google.android.gms:play-services-maps:12.0.1'**
    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 'com.android.support:mediarouter-v7:28.0.0'
    **implementation 'com.google.android.gms:play-services:12.0.1'**
}

Ответ 18

Я был подключен, но мой проект уже был перенесен на AndroidX, но после повторной миграции на androidX он изменил часть моего проекта, и проблема была решена.

Ответ 19

Добавление

android.useAndroidX = истина

android.enableJetifier = истина

чтобы gradle.properties работало на меня.