Подтвердить что ты не робот

"Дублирующий файл lib, скопированный в APK-META-INF/license.txt" в Android Studio

Я использую ниже 2 lib в проекте 1. spring -core-3.1.0.RELEASE.jar 2. spring -web-3.1.0.RELEASE.jar

Но Android-студия рассматривает дубликат записи для выше lib и дает ошибку при упаковке.


Error:duplicate files during packaging of APK E:\Code\iDoc\app\build\outputs\apk\app-debug-unaligned.apk
    Path in archive: META-INF/license.txt
    Origin 1: E:\Code\iDoc\app\libs\spring-core-3.1.0.RELEASE.jar
    Origin 2: E:\Code\iDoc\app\libs\spring-web-3.1.0.RELEASE.jar
You can ignore those files in your build.gradle:
    android {
      packagingOptions {
        exclude 'META-INF/license.txt'
      }
    }
------------------------------------------------------------

Кто-нибудь сталкивался с подобной проблемой?

Пожалуйста, предложите некоторые проблемы для этой ошибки.

4b9b3361

Ответ 1

Перейдите в свой build.gradle файл и добавьте следующую строку:

 packagingOptions {
    exclude 'META-INF/license.txt'
  }

В моем случае я должен был добавить следующее:

apply plugin: 'com.android.library'    
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    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')
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.mcxiaoke.volley:library:1.0.15'
    compile 'com.google.code.gson:gson:2.2.4'
    compile "org.apache.httpcomponents:httpcore:4.4.1"
    compile "org.apache.httpcomponents:httpmime:4.3.6"


}

Примечание:

  • Мета файлы не влияют на какие-либо программные функции приложения. Мета файлы в основном содержат текстовую информацию, такую ​​как юридическое уведомление, лицензии и т.д. Библиотек открытых источников. Исключая это не повлияет ни на что.

  • Когда мы используем несколько сторонних библиотек с открытым исходным кодом, иногда у двух или более проектов есть одинаковые текстовые файлы с именами (например: License.txt или Notice.txt или dependencies.txt). Это вызывает конфликт во время сборки. В этот момент наша мощная студия Android предлагает нам исключить конфликтующие мета файлы.

Ответ 2

Важно: при исключении файлов обратите внимание, что это чувствительно к регистру

Я добавил это в свой gradle, и он не работал:

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

Я получил ошибку:

Duplicate files copied in APK META-INF/notice.txt

Итак, исправление относится к add META-INF/notice.txt:

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

Ответ 3

У меня есть самое простое решение для txt файлов. Если вы удалите все txt файлы в зависимости.

Добавляйте этот блок только.

packagingOptions {
    exclude '**/*.txt'
}