Lỗi :: các tệp trùng lặp trong quá trình đóng gói APK


144

Studio Android. Tôi đang gặp loại lỗi này trong quá trình chạy ứng dụng.

Error:Execution failed for task ':app:packageDebug'. Duplicate files copied in APK META-INF/notice.txt

xây dựng. nâng cấp

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    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/ASL2.0'
    }

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
    compile 'com.octo.android.robospice:robospice:1.4.11'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.11'
}

Làm thế nào tôi có thể sửa lỗi này?

EDITED

Các tùy chọn loại trừ này đã giải quyết vấn đề của tôi:

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
Đây không phải là trùng lặp! Những người hỏi khác đã sửa lỗi của họ bằng cách thêm tùy chọn loại trừ. Nhưng như tất cả các bạn có thể thấy tôi đã thêm các tùy chọn này và vấn đề của tôi đã không biến mất.
Robertas Setkus


Có ý kiến ​​gì về vấn đề này stackoverflow.com/questions/30364950/ từ
Jithu PS

Điều đó cũng giải quyết được vấn đề của tôi. cảm ơn
Reshma

Câu trả lời:


56

Tôi nghĩ rằng so sánh chuỗi là trường hợp nhạy cảm. thử vớiexclude 'META-INF/notice.txt'


Câu trả lời của tôi là về việc thử với notice.txtthay vì NOTICE.txt? Mặc dù lỗi trông thực sự khác với lỗi xảy ra. Bạn có một META-INF/notice.txttập tin trong của bạn src/main/resources/?
Xavier Ducrohet

Xin lỗi Xavier. Tôi đã không hiểu câu trả lời của bạn sau đó. Bây giờ tôi có thể thấy những gì bạn có ý nghĩa. Tôi đã cố gắng thay đổi exclude 'META-INF/notice.txt'nhưng sau đó giao diện điều khiển nhắc nhở điều đó Duplicate files copied in APK META-INF/NOTICE.txt. Lạ thật phải không? Không có resourcesthư mục dưới C:\PathToAndroidStudioProject\src\main.
Robertas Setkus

1
Nếu bạn đặt cả hai exclude 'META-INF/notice.txt'exclude 'META-INF/NOTICE.TXT', nó có hoạt động không?
Xavier Ducrohet

Cảm ơn. Điều đó đã giúp. :)
Robertas Setkus 18/03/2016

1
trong tập tin build.gradle trong phần 'android', hãy thử thêm: packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Krystian

22

Tôi nghĩ bạn chỉ cần bao gồm các tùy chọn này trong build.gradle :

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

1
Cuối cùng sau khi thực hiện điều này, tôi đã giải quyết truy vấn này. Cảm ơn người đàn ông :)
Hardik Joshi

10

Câu trả lời ngắn:

Xem đầu ra lớp chi tiết bằng cách sử dụng gradle assemblevà lưu ý các tệp trùng lặp và loại trừ chúng bằng cách sử dụng:

android {
  packagingOptions {
    exclude 'META-INF/notice.txt'
  }
}

Câu trả lời dài:

Chạy assembletác vụ lớp từ dòng lệnh cho đầu ra chi tiết:

./gradlew assemble || gradle assemble

Điều này tự động hiển thị những gì cần loại trừ:

studioWorkspace/CCDroid git:(master)  ± ./gradlew assembleDebug
:app:preBuild
:app:compileDebugNdk UP-TO-DATE
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preDexDebug UP-TO-DATE
:app:dexDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
Error: duplicate files during packaging of APK /Users/shubham/code/studioProjects/CCDroid/app/build/outputs/apk/app-debug-unaligned.apk
    Path in archive: LICENSE
    Origin 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    Origin 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-all/1.8.4/5c97d8b6e715ed941aeb93d6fc401ab3eb18a566/mockito-all-1.8.4.jar
You can ignore those files in your build.gradle:
    android {
      packagingOptions {
        exclude 'LICENSE'
      }
    }
:app:packageDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK LICENSE
    File 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
    File 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 11.863 secs

Xem phần này trong đầu ra:

android {
  packagingOptions {
    exclude 'LICENSE'
  }
}

Nó thậm chí còn hiển thị danh sách các phụ thuộc có nguồn gốc các tệp trùng lặp (LICENSE). Xem các dòng có Origin # trong đầu ra.


Có ý kiến ​​gì về vấn đề này stackoverflow.com/questions/30364950/ từ
Jithu PS

1
Tôi gần như bỏ qua câu trả lời của bạn, mặc dù đó là câu trả lời đúng cho tôi. Tôi sẽ đề nghị đặt câu trả lời ở đầu bài: android {packOptions {loại trừ 'LICENSE'}} theo sau là lời giải thích và đầu ra lớp dài (hầu như không liên quan đến câu trả lời. trong build.gradle của bạn: android {{packagingOptions loại trừ 'PHÉP'}}
gorbysbm

Làm xong. Cảm ơn rất nhiều @gorbysbm.
Shubham Chaudhary

6

Thêm phần này vào tệp build.gradle của bạn ...

packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}

như thế này...

android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "your package name"
    minSdkVersion 14
    targetSdkVersion 25
    versionCode 30
    versionName "3.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/NOTICE' // will not include NOTICE file
    exclude 'META-INF/LICENSE' // will not include LICENSE file
    exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}
}

3

Đó là nhiều hơn một lỗi, bạn đã đúng.

Dưới apply plugin: 'android-library'

thêm điều này :: android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }

Lỗi thứ nhất là do trùng lặp tệp, thứ 2 là do tệp LICENSE và THÔNG BÁO. Nó sẽ hoạt động sau

EDIT :: Xem bài đăng của tôi ở đây về việc xác định các sự cố :: Plugin Android Gradle 0.7.0: "các tệp trùng lặp trong quá trình đóng gói APK"


Có ý kiến ​​gì về vấn đề này stackoverflow.com/questions/30364950/ từ
Jithu PS

1

cái này hiệu quả với tôi

android {
...

    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/ASL2.0'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
    }
}

1

Thật thú vị, khi tôi xóa dòng này khỏi lớp, nó hoạt động:

compile 'org.apache.commons:commons-lang3:3.3.1'

0

Tôi đã phải chơi xung quanh một chút để tìm vị trí phù hợp cho bao bì. Giải quyết vấn đề trùng lặp tệp cho xung đột giữa jackson-core: 2.2.2jackson-databind: 2.2.2 Ngoài ra, DSL dường như đã thay đổi gần đây Vì vậy, trong Android Studio 1.4.1 gần đây với buildTools 23 bạn phải đặt Android. tùy chọn đóng gói ở cùng cấp độ với compileOptions VÀ KHÔNG bên trong bất kỳ mô hình nào {android { niềng răng!

model { 
   android {
        compileSdkVersion = 21
        buildToolsVersion = "23.0.1"

        defaultConfig.with {
              applicationId = "com.android.sensorgraph"
              minSdkVersion.apiLevel = 21
              targetSdkVersion.apiLevel = 22
        }
   }

   android.packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
   }
   compileOptions.with {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
   }
} 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.