简体   繁体   中英

Getting a DuplicateFileException when adding a module to my Android app

I am trying to add the Paho MQTT service (and client) to my Android app, but I am running into a com.android.builder.packaging.DuplicateFileException runtime exception, when running my app.

It appears to me that everything is setup right, and when I clean/build, I get no errors at all.

My app build.gradle file looks like:

dependencies {
    compile fileTree(dir: '../org.eclipse.paho.android/service/libs', excludes: ["org.eclipse.paho.client.mqttv3-1.1.0.jar"], include: '')
    compile fileTree(include: ['*.jar'], dir: 'libs', excludes: ["*org.eclipse.paho.client.mqttv3-1.1.0.jar"])
    compile (project(':org.eclipse.paho.android.service')){
        // exclude module: "org.eclipse.paho.client.mqttv3"
        transitive=true
    }

    // Uncommenting the below (when commenting out the above) WORKS.
    //   However, I need to be able to alter the source, to I do need to be able 
    //   to import the Paho MQTT service as a module to my app.
    // compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    // compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

    ...

However, when I run, I receive a DuplicateFileException exception:

* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK org/eclipse/paho/client/mqttv3/internal/nls/messages_zh_TW.properties
    File1: /Users/me/.gradle/caches/modules-2/files-2.1/org.eclipse.paho/org.eclipse.paho.client.mqttv3/1.1.0/89d827ffa47c241f2627421ef1d6c7a8c207a341/org.eclipse.paho.client.mqttv3-1.1.0.jar
    File2: /Users/me/myapp/code/myapp-android/org.eclipse.paho.android.service/build/intermediates/bundles/default/classes.jar

My file hierarchy looks like:

在此处输入图片说明

which appears ok to me.

Does anyone have any pointers on how to resolve this? The error claims that org.eclipse.paho.client.mqttv3-1.1.0.jar is clashing with classes.jar , but my gradle file explicitly excludes the compiling of org.eclipse.paho.client.mqttv3-1.1.0.jar (or so I think it does).

I'm at a loss here; any pointers are welcomed.

This happens because two of your dependencies are using Eclipse Paho MQTT library.

Following should fix the issue

Add following to your app level gradle file

packagingOptions {
    exclude 'META-INF/ECLIPSE_.SF'
    exclude 'META-INF/ECLIPSE_.RSA'
}

compile("one-of-your-dependency:1.0.0"){
    exclude group: 'org.eclipse.paho'
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM